我正在尝试从scrapy和xpath的网站中提取属性:
response.xpath('//section[@id="attributes"]/div/table/tbody/tr/td/text()').extract()
属性通过以下方式嵌套:
<section id="attributes">
<h5>Attributes</h5>
<div>
<table>
<tbody>
<tr>
<td>Attribute 1</td>
<td>Value 1</td>
</tr>
<tr>
<td>Attriburte 2</td>
<td>Value 2</td>
</tr>
与此相关的有两个问题:
td
,就需要以某种方式进行配对。例如:“属性1” =“值1” 我是phyton和scrapy的新手,非常感谢您的帮助。
答案 0 :(得分:2)
首先,您应该尝试从XPath删除tbody
标记,因为它通常不在页面源代码中。
您可以按以下方式更新代码:
cells = response.xpath('//section[@id="attributes"]/div/table//tr/td/text()').extract()
att_values = [{first: second} for first, second in zip(cells[::2], cells[1::2])]
您将获得属性值对的列表:
[{attr_1: value_1}, {attr_2: value_2}, {attr_3: value_3}, ...]
或
att_values = {first: second for first, second in zip(cells[::2], cells[1::2])}
获取字典
{attr_1: value_1, attr_2: value_2, attr_3: value_3, ...}
答案 1 :(得分:1)
尝试:
for row in response.css('section#attributes table tr'):
td1 = row.xpath('.//td[1]/text()').get()
td2 = row.xpath('.//td[2]/text()').get()
# your logic further