python - scrapy xpath 如何

标签 python xpath web-scraping scrapy

我的蜘蛛需要在一定程度上适应我正在抓取的网站,因为我需要获取的信息有时在 div[1] 中,有时在 div[2] 中。这是一个例子:

item['details'] = site.select('//*[@id="detailFacts"]/div[2]/div[2]//text()').extract()

item['details'] = site.select('//*[@id="detailFacts"]/div[1]/div[2]//text()').extract()

如何将这两个语句组合到一个语句中,以便 scrapy 从其中一个语句中获取我?

最佳答案

尝试一下:

details = site.select('//*[@id="detailFacts"]/div[1]/div[2]//text()|//*[@id="detailFacts"]/div[2]/div[2]//text()').extract()
item['details'] = next(s for s in details if s)  # getting first not-empty item from the list

details = site.select('//*[@id="detailFacts"]/div[1]|div[2]/div[2]//text()').extract()
item['details'] = next(s for s in details if s)  # getting first not-empty item from the list

希望它对您有用。

关于python - scrapy xpath 如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16946342/

相关文章:

python - 在Python中将整数从argv传递到数组中

python - AttributeError : 'unicode' object has no attribute 'fromstring' . 如何解决这个问题?

Python - 网页抓取 - BeautifulSoup

python - 从 pandas 数据框中选择具有相同数据的行

python - 如何解决/绕过似乎与 GIL 相关的锁定问题

Java XML JDOM2 XPath - 使用 XPath 表达式从 XML 属性和元素读取文本值

xml - 列出persistence.xml 中的所有持久化单元

python - Scrapy XPath - 无法获取范围内的文本

Python-满足不同条件时如何从变量中选择

java xpath 将格式化日期与 xml 中的当前日期进行比较