Scrapy教程只抓取一页 - 尝试了当前SO答案页面中的所有内容

Mol*_*din 1 python scrapy python-2.7

我在使用Scrapy教程时遇到了问题.无论我从其他人关于Scrapy的问题中得到什么解决方案,只能抓取我在网上找到的一个页面(包括所有这些页面上的SO),它只会抓取一页.我对Python有足够的经验,我几乎完全确定它不是缩进问题.这是我目前的代码,在教程中稍作修改,以反映我发现的其他人的解决方案.请注意,我也尝试过parse_item,但这也无效.

基本上,对于我的蜘蛛,我需要从一个.html页面开始,所以我这样做是为了我自己的教程目的.这是问题 - 它只需要是一个目录吗?

import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor

class DmozSpider(CrawlSpider):
    name = "dmoz"
    allowed_domains = ["mollydesjardin.com"]
    start_urls = [
        "http://www.mollydesjardin.com/"
    ]

    rules = [Rule(SgmlLinkExtractor(allow=()), callback='parse_item')]

    def parse(self, response):
        filename = response.url.split("/")[-2]
        with open(filename, 'wb') as f:
            f.write(response.body)
Run Code Online (Sandbox Code Playgroud)

pau*_*rth 7

这是一个常见的陷阱CrawlSpider:你不应该覆盖内置parse()方法(所有CrawlSpider魔法发生的地方),除非你知道你在做什么.

警告在文档中,但很多用户都错过了.

将您的parse()方法重命名为parse_item()(正如您在规则中声明的那样).

根据您的需要,您可能希望follow=True在规则中添加一个,以便抓取抓取页面中的链接(在起始URL之后).