Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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
Python 在scrapy中未获得预期输出_Python_Scrapy - Fatal编程技术网

Python 在scrapy中未获得预期输出

Python 在scrapy中未获得预期输出,python,scrapy,Python,Scrapy,我正在做网页抓取,但我没有得到我期望的输出 我正在学习网络抓取,还是个初学者。问题是并不是所有的报价都被删掉了 import scrapy class QuoteSpider(scrapy.Spider): name = 'Quotes' start_urls = [ 'http://quotes.toscrape.com/' ] def parse(self, response): for quotes in response.sele

我正在做网页抓取,但我没有得到我期望的输出

我正在学习网络抓取,还是个初学者。问题是并不是所有的报价都被删掉了

import scrapy

class QuoteSpider(scrapy.Spider):
    name = 'Quotes'
    start_urls = [
    'http://quotes.toscrape.com/'
    ]
    def parse(self, response):
        for quotes in response.selector.xpath("//div[@class='quote']"):
            yield{
            'text':quotes.xpath("//span[@class='text']/text()").extract_first(),
            'author':quotes.xpath("//small[@class='author']/text()").extract_first(),
            'tags':quotes.xpath("//div[@class='tags']/child::a/text()").extract(),
            }

我希望第一页上的所有引文都应该删掉。相反,我一次又一次地得到相同的引用和作者,但每次都会提取所有的标签。我还是个初学者。非常感谢您的帮助。

在嵌套选择器上使用xpath时,这是一个常见错误

在已提取的选择器上使用xpath时,如果要将已提取的用作新xpath选择器的根,则需要使用
启动xpath。如果不这样做,它将像往常一样使用所有DOM

因此,只需将最后一行更改为:

{
    'text':quotes.xpath(".//span[@class='text']/text()").extract_first(),
    'author':quotes.xpath(".//small[@class='author']/text()").extract_first(),
    'tags':quotes.xpath(".//div[@class='tags']/child::a/text()").extract(),
}

先用extract替换extract_,这应该可以用,它成功了。但现在它首先被提取为所有引用,而不是所有作者和所有标记。我希望它像第一个引用,而不是作者姓名,然后是标签。你能帮我吗?非常感谢,兄弟,成功了。下次我会记得的。