Python 如何使刮擦跟随链接和刮擦他们

Python 如何使刮擦跟随链接和刮擦他们,python,scrapy,Python,Scrapy,我对Scrapy和Python非常陌生,我想学习它。在我的第一个项目中,我想创建一个爬行器,它可以对所有站点进行爬行,并从中刮取项目,以便在csv文件中按url排列。到目前为止,一切顺利;我做得很好:-)对于startpage,但是我无法说服scrapy跟随起始页上的URL并scrape它们(至少xpath选择器会给我在起始页上找到的URL)。我很确定,我的代码很糟糕,但是第一步总是很困难。:-)有人能帮我做得更好吗 类QuotesSpider(刮毛蜘蛛): 让我首先说明,您试图实现的目标适合于

我对Scrapy和Python非常陌生,我想学习它。在我的第一个项目中,我想创建一个爬行器,它可以对所有站点进行爬行,并从中刮取项目,以便在csv文件中按url排列。到目前为止,一切顺利;我做得很好:-)对于startpage,但是我无法说服scrapy跟随起始页上的URL并scrape它们(至少xpath选择器会给我在起始页上找到的URL)。我很确定,我的代码很糟糕,但是第一步总是很困难。:-)有人能帮我做得更好吗

类QuotesSpider(刮毛蜘蛛):


让我首先说明,您试图实现的目标适合于
爬行爬行器,而不是普通爬行器。可以在参数中指定选择器

如果您想在这个场景中使用
scrapy.Spider
,您必须找到所有链接,并同时为所有链接找到
yield
a
Request

all_pages = response.xpath('//a[contains(@href, "norisbank")]/@href').getall()
for next_pagein all_pages :
    next_page= response.urljoin(next_page)
    yield scrapy.Request(next_page, callback=self.parse)
这里要理解的最重要的概念是,当您生成一个
请求时,您只是向scrapy引擎发送请求。这些操作不是立即执行的。这些请求被发送到一个池中,scrapy引擎将从中提取并处理这些请求。您可以阅读有关scrapy的架构


希望它有助于

将最后一行设置为
yield scrapy.Request(url=next\u page,callback=self.parse)
对不起,不起作用。scrapy在起始页之后仍然存在,现在我将xpath选择器中的“norisbank”关键字改为“html”,第二页被废弃;起始页上引用的第一个html页面。但是,在此之后,爬行器退出,不再继续向下进入起始页。现在我的csv中有两个条目。。。。起始页和第一个html引用。我不知道,为什么scrapy不走得更远……谢谢!这大大提高了效率——不仅是为了进一步提高一个步骤,并且能够废弃网站,还为了更好地理解刮擦的机理!再次感谢你,真的感谢你的帮助!很高兴这有帮助。请将此答案标记为已接受
all_pages = response.xpath('//a[contains(@href, "norisbank")]/@href').getall()
for next_pagein all_pages :
    next_page= response.urljoin(next_page)
    yield scrapy.Request(next_page, callback=self.parse)