我想将两个具有不同父级的选择器链接在一起。我目前使用的选择器:
..css('td:nth-child(8) > span.cap.mtv > ::text')
产生:
<Selector xpath="descendant-or-self::td[count(preceding-sibling::*) = 7]/span[@class and contains(concat(' ', normalize-space(@class), ' '), ' cap ') and (@class and contains(concat(' ', normalize-space(@class), ' '), ' mtv '))]/*/text()" data='$725,000'>
我遇到的问题是我还想要以下内容:
..xpath('td[8]/div/text()')
产生:
<Selector xpath='td[8]/div/text()' data='UFA'>
最终我想使用元素加载器并提取以获取:
$725,000
UFA
...
我想实现类似下面的东西..
...xpath('td[8]').css('span.cap.mtv > ::text').xpath('/div/text()')
如果程序之前没有发现任何东西,但我更愿意拥有这种“非此即彼”的灵 active ,我之前只是用另一组选择器重新抓取了一个元素。或者,对于这种情况,我最好同时查看另一个选择器吗?
非常感谢任何帮助!
最佳答案
如果您使用元素加载器,您可以简单地为单个字段添加多个选择器,如 scrapy docs 所示。 .
在创建加载器之后,这样的事情应该可以工作:
loader.add_css('field', 'td:nth-child(8) > span.cap.mtv > ::text')
loader.add_xpath('field', 'td[8]/div/text()')
然后您的输入/输出处理器将负责这些信息的组合方式。
关于css - 具有不同 parent 的 Scrapy 链选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48408124/