Python Scrapy不会在起始URL中包含的数据中爬行

Python Scrapy不会在起始URL中包含的数据中爬行,python,scrapy,web-crawler,Python,Scrapy,Web Crawler,我正试图用scrapy抓取整个网站。根据scarpy的文件 start_URL-爬行器开始爬网的URL列表, 没有指定特定URL时。所以,下载的第一页 将是这里列出的那些。随后将生成URL 从包含在起始URL中的数据开始 因此,根据这个定义,scrapy应该在start\u url中提到的页面上的所有子url中爬行,但它只爬行我指定的url。我确实指定了下面提到的规则,但没有帮助。它只抓取并输出我在开始URL中指定的页面 以下是我的代码片段: class AcdivocaFirstSpider(

我正试图用scrapy抓取整个网站。根据scarpy的文件

start_URL-爬行器开始爬网的URL列表, 没有指定特定URL时。所以,下载的第一页 将是这里列出的那些。随后将生成URL 从包含在起始URL中的数据开始

因此,根据这个定义,scrapy应该在
start\u url
中提到的页面上的所有子url中爬行,但它只爬行我指定的url。我确实指定了下面提到的规则,但没有帮助。它只抓取并输出我在开始URL中指定的页面

以下是我的代码片段:

class AcdivocaFirstSpider(scrapy.Spider):
    name = "example_sample"
    allowed_domains = ["example.org"]
    start_urls = ["http://www.example.org/site/id/home"]
    rules = rules = [Rule(SgmlLinkExtractor(), callback='parse_item', follow=True)]

    def parse(self, response):
        filename = response.url.split("/")[-1] #so eg it would name 'home'
        open(filename, 'wb').write(response.body)
这将为“主页”生成一个包含提取的HTML数据的单个文件。如何让它从主页开始递归地抓取整个网站

感谢您的帮助。多谢各位

2件需要改变的事情:

  • 要使用规则,请将
    AcdivocaFirstSpider
    设为
    scrapy.contrib.Spider.CrawlSpider
    的子类,而不是
    scrapy.Spider
后续URL将从起始URL中包含的数据连续生成

这句话有误导性
scrapy.Spider本身对这些起始URL没有任何特殊作用:它下载它们并将响应的主体传递给
parse()
。如果实现了
parse()
回调以产生进一步的请求,则是的,将从这些URL的数据生成后续URL,但这不是自动/自动的

  • 使用
    scrapy.contrib.spider.CrawlSpider
    时,需要重写内置的
    parse()
    方法,在该方法中检查规则并生成页面请求。因此,您需要将
    parse
    重命名为
    parse_item
    (如您的规则所述)

请参见

这很有帮助!!非常感谢,我最终没有重写默认的解析方法,而是将其定义为要使用的回调!