Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 获取scrapy中文本的值(不带标记)_Xpath_Scrapy - Fatal编程技术网

Xpath 获取scrapy中文本的值(不带标记)

Xpath 获取scrapy中文本的值(不带标记),xpath,scrapy,Xpath,Scrapy,我正在尝试获取没有标签的文本值,如 到目前为止,我已经使用ScrapyShell通过这段代码获得了它们的值 item=response.xpath("//div[@class='Normal']/text()").extract() 或 问题是,当我在Scrapy Shell中使用这些命令时,会得到值,但当我在Scrapy spyder文件中使用这些命令时,它会返回null值 这个问题有什么解决办法吗?我为您编写了一个简单的spider。你得到你想要的输出。 同时显示您的代码,以便我可以纠正

我正在尝试获取没有标签的文本值,如

到目前为止,我已经使用ScrapyShell通过这段代码获得了它们的值

 item=response.xpath("//div[@class='Normal']/text()").extract()

问题是,当我在Scrapy Shell中使用这些命令时,会得到值,但当我在Scrapy spyder文件中使用这些命令时,它会返回null值


这个问题有什么解决办法吗?

我为您编写了一个简单的spider。你得到你想要的输出。 同时显示您的代码,以便我可以纠正您的错误

刮刀
您的代码存在多个问题

首先,它是混乱的。第二,您用来获取所有新闻文章链接的CSS选择器,多次提供相同的URL。第三,根据您的代码,在scrapy.Request方法调用中,您使用self.parseNews作为回调方法,这在整个文件中都不可用

我已经在某种程度上修复了你的代码,现在,我没有面临任何问题

# -*- coding: utf-8 -*-
import scrapy


class TimesofindiaSpider(scrapy.Spider):
    name = 'timesofindia'
    allowed_domains = ["timesofindia.indiatimes.com"]
    start_urls = ["https://timesofindia.indiatimes.com/World"]
    base_url = "https://timesofindia.indiatimes.com/"

    def parse(self, response):        
        for urls in response.css('div.top-newslist > ul > li'):
            url = urls.css('a::attr(href)').extract_first()
            yield scrapy.Request(self.base_url + url, callback = self.parse_save)

    def parse_save(self, response):
        print(response.xpath("//div[@class='Normal']/text()").extract())

请提供您的scrapy spyder文件的代码。如果没有它,你就无法判断这有什么问题。在这两种情况下,请尝试将response.text写入一个文件shell、spider,看看是否可以发现任何差异。可能由于检测到的活动或某些请求方面的原因,您在spider中得到了不同的响应。我尝试过,但在这里不起作用。这里是我的spyder文件驱动器。google.com/open?id=1K36LN1IwXPBihozoklc67JLEIWQZJNxN非常感谢您,这很有帮助:
import scrapy


class ExampleSpider(scrapy.Spider):
    name = 'example'
    allowed_domains = ['timesofindia.indiatimes.com']
    start_urls = ['https://timesofindia.indiatimes.com/us/donald-trump-boris-johnson-talk-5g-and-trade-ahead-of-g7-white-house/articleshow/70504270.cms']

    def parse(self, response):
        item = response.xpath('//div[@class="Normal"]/text()').extract()

        yield{'Item':item}
# -*- coding: utf-8 -*-
import scrapy


class TimesofindiaSpider(scrapy.Spider):
    name = 'timesofindia'
    allowed_domains = ["timesofindia.indiatimes.com"]
    start_urls = ["https://timesofindia.indiatimes.com/World"]
    base_url = "https://timesofindia.indiatimes.com/"

    def parse(self, response):        
        for urls in response.css('div.top-newslist > ul > li'):
            url = urls.css('a::attr(href)').extract_first()
            yield scrapy.Request(self.base_url + url, callback = self.parse_save)

    def parse_save(self, response):
        print(response.xpath("//div[@class='Normal']/text()").extract())