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')
我想在 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')