我想在scrapy中导入一个表格,如下所示:
<tr class="header1">
<tr class="row1">
<tr class="row2">
<tr class="row3">
<tr class="header2">
<tr class="row4">
依赖于标题之间的不同行,如何导入标题,以便我有一个项目,第一个属性是标题名称或文本?像
header1, row1
header1, row2
header1, row3
header2, row4
答案 0 :(得分:0)
你可以迭代&#34;行&#34;节点,并为每个节点获取前面的&#34;标头&#34;同级
想象一下,您有以下输入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')