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)