table 导致蜘蛛重复
Repetition in spider result from table
我正在 scrapy 中使用 python 蜘蛛来解析页面并且一切正常,除了从 table 中提取。它从 table 中提取数据,但重复多次。
所以对于 table:
<tbody><tr>
<td><b>Name</b></td>
<td><b>Role</b></td>
</tr>
<tr style="background-color:#C0C0C0; color:Black;">
<td>Name 1</td>
<td>No Party</td>
</tr>
<tr style="background-color:#C0C0C0; color:Black;">
<td>Eny</td>
<td>Party</td>
</tr>
<tr style="background-color:#C0C0C0; color:Black;">
<td>Cory</td>
<td>Party</td>
</tr>
</tbody>
所以我需要从 table 中抓取有第二方的字符串,将它们组合起来写成一个字符串
我会这样写解析器:
raw_data['names'] = process_string(", ".join(page.xpath('//tr[td="Party"]/td[1]/text()').extract()))
结果我得到:
恩妮,科里,恩特,科里,恩妮,科里,恩妮,科里
所以它重复了 4 次正确的结果。
scrip 没有重复,其他领域工作完美所以 scrip 没有错,只是这个表达。
我尝试了不同的 xpath 但结果是一样的。 tables 有什么不同?
我不是 XPath 专家,所以这里是如何使用 CSS 选择器做到这一点的方法:
names_list = [row.css('td:nth-child(1)::text').extract_first()
for row in s.css('tr')
if row.css('td:nth-child(2)::text').extract_first() == 'Party']
raw_data['names'] = ', '.join(names_list)
我正在 scrapy 中使用 python 蜘蛛来解析页面并且一切正常,除了从 table 中提取。它从 table 中提取数据,但重复多次。
所以对于 table:
<tbody><tr>
<td><b>Name</b></td>
<td><b>Role</b></td>
</tr>
<tr style="background-color:#C0C0C0; color:Black;">
<td>Name 1</td>
<td>No Party</td>
</tr>
<tr style="background-color:#C0C0C0; color:Black;">
<td>Eny</td>
<td>Party</td>
</tr>
<tr style="background-color:#C0C0C0; color:Black;">
<td>Cory</td>
<td>Party</td>
</tr>
</tbody>
所以我需要从 table 中抓取有第二方的字符串,将它们组合起来写成一个字符串 我会这样写解析器:
raw_data['names'] = process_string(", ".join(page.xpath('//tr[td="Party"]/td[1]/text()').extract()))
结果我得到:
恩妮,科里,恩特,科里,恩妮,科里,恩妮,科里
所以它重复了 4 次正确的结果。 scrip 没有重复,其他领域工作完美所以 scrip 没有错,只是这个表达。 我尝试了不同的 xpath 但结果是一样的。 tables 有什么不同?
我不是 XPath 专家,所以这里是如何使用 CSS 选择器做到这一点的方法:
names_list = [row.css('td:nth-child(1)::text').extract_first()
for row in s.css('tr')
if row.css('td:nth-child(2)::text').extract_first() == 'Party']
raw_data['names'] = ', '.join(names_list)