Scrapy table with tr as header 如何导入

Scrapy table with tr as header how to import it

我想在 scrapy 中导入一个 table ,组织如下:

<tr class="header1">
<tr class="row1">
<tr class="row2">
<tr class="row3">
<tr class="header2">
<tr class="row4">

等等 header 之间的不同行,我如何导入 header 以便我有一个第一个属性是 header 名称或文本的项目?喜欢

header1, row1
header1, row2
header1, row3
header2, row4

您可以遍历 "row" 个节点,并且对于每个节点,获取 前面的 "header" 同级 .

假设您有以下输入 HTML:

<table>
    <tr class="header1">HEADER 1</tr>
    <tr class="row1">ROW 1</tr>
    <tr class="row2">ROW 2</tr>
    <tr class="row3">ROW 3</tr>
    <tr class="header2">HEADER 2</tr>
    <tr class="row4">ROW 4</tr>
</table>

现在,您可以通过以下方式解析它:

>>> for row in response.css("tr[class^=row]"):
...     header_text = row.xpath("preceding-sibling::tr[starts-with(@class, 'header')][1]/text()").extract_first()
...     row_text = row.xpath("text()").extract_first()
...     print(header_text, row_text)
... 
(u'HEADER 1', u'ROW 1')
(u'HEADER 1', u'ROW 2')
(u'HEADER 1', u'ROW 3')
(u'HEADER 2', u'ROW 4')