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

Python 如何使用Scrapy获取标记附近的非元素文本?,python,web-scraping,scrapy,parsel,Python,Web Scraping,Scrapy,Parsel,我正在尝试使用Scrapy框架刮取页面 <div class="info"><span class="label">Establishment year</span> 2014</div> 有什么线索可以说明问题吗?因为您试图在标记之间提取它,所以应该在末尾使用标记。我不知道你想刮哪个网站,但这里有一个例子,我在这个网站的“a”标签之间刮,这里是我用来刮的代码 response.xpath("(//h3)[

我正在尝试使用Scrapy框架刮取页面

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

有什么线索可以说明问题吗?

因为您试图在标记之间提取它,所以应该在末尾使用标记。我不知道你想刮哪个网站,但这里有一个例子,我在这个网站的“a”标签之间刮,这里是我用来刮的代码

response.xpath("(//h3)[1]/a/text()").extract_first()
在第二行代码中,您没有正确使用提取文本的函数。您使用的是CSS选择器。对于Xpath,if应该是/text(),而不是::text()。对于您的代码,我认为您应该尝试以下选项之一。如果有帮助,请告诉我

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


因为您试图在标记之间提取它,所以应该在末尾使用标记。我不知道你想刮哪个网站,但这里有一个例子,我在这个网站的“a”标签之间刮,这里是我用来刮的代码

response.xpath("(//h3)[1]/a/text()").extract_first()
在第二行代码中,您没有正确使用提取文本的函数。您使用的是CSS选择器。对于Xpath,if应该是/text(),而不是::text()。对于您的代码,我认为您应该尝试以下选项之一。如果有帮助,请告诉我

response.xpath("//span[contains(text(),'Establishment year')]/div/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'
来自parsel导入选择器的
>>
>>>选择器=选择器(text='2014成立年份')
>>>selector.xpath('/*[@class=“info”]/text()).get()
' 2014'

从父元素中提取直接文本子元素(
/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'
来自parsel导入选择器的
>>
>>>选择器=选择器(text='2014成立年份')
>>>selector.xpath('/*[@class=“info”]/text()).get()
' 2014'

问题是我没有一个标签。如果我尝试一些/div/text()或/span/text()的东西,它对我不起作用。是否可以提供指向网站的链接?问题是我没有一个标签。如果我尝试了一些/div/text()或/span/text()的东西,它对我不起作用。是否可以提供指向网站的链接?耶。我不能使用信息类,因为页面上有很多。我尝试了类似的方法,它对我很有效:response.xpath(//span[contains(text(),'building year')]/../text())。get()耶。我不能使用信息类,因为页面上有很多。我尝试过类似的方法,但效果不错:response.xpath(//span[contains(text(),'building year')]/../text()).get()