css - 具有不同 parent 的 Scrapy 链选择器

标签 css python-3.x xpath scrapy

我想将两个具有不同父级的选择器链接在一起。我目前使用的选择器:

..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/

相关文章:

python - 为什么 map 在 Python 3 中返回一个 map 对象而不是一个列表?

c# - htmlagilitypack xpath 不工作

python - 如何从网页中提取单个元素?

html - 表格单元格布局和空 div 的奇怪行为

CSS -::after 伪元素定位和维度问题

html - 如何在 Foundation XY 网格(flexbox)中均匀分布单元格高度

python - 将元组的可迭代对象转换为每个元素的可迭代对象 (Python)

python - 将字节写入文件,编码错误

html - 元素内联时的额外像素

python - 如何在XPath中选择多个标签?