如何使用Scrapy获取标签附近的非元素文本



我正在尝试使用Scrapy Framework抓取页面。

<div class="info"><span class="label">Establishment year</span> 2014</div>

我要处理的标签如上图所示。我想得到2014年的价值。我不能使用信息或标签类,因为它们在页面中很常见。

所以,我尝试了以下xpath,但结果为空:

response.xpath("//span[contains(text(),'Establishment year')]/following-sibling").get()
response.xpath("//span[contains(text(),'Establishment year')]/following-sibling::text()").get()

有什么线索吗?

由于您试图在标记之间提取它,因此应该在末尾使用标记。我不知道你想刮哪个网站,但这里有一个我在这个网站上的"a"标签之间刮的例子http://books.toscrape.com/这是我用来做的代码

response.xpath("(//h3)[1]/a/text()").extract_first()

在第二行代码中,您没有使用提取文本权限的函数。您正在使用的是CSS选择器。对于Xpath,if应该是/text((,而不是::text((。对于你的代码,我认为你应该尝试其中一个选项。如果有帮助,请告诉我。

response.xpath("//span[contains(text(),'Establishment year')]/div/text()").get()

response.xpath("//span[contains(text(),'Establishment year')]/span/text()").get()

从父元素提取直接文本子元素(/text()(:

>>> from parsel import Selector
>>> selector = Selector(text='<div class="info"><span class="label">Establishment year</span> 2014</div>')
>>> selector.xpath('//*[@class="info"]/text()').get()
' 2014'

最新更新