1

我一直在努力爬取一个网站并且被卡住了。我需要从一个 url 开始,并抓取源自它的所有后续 url,以及源自这些的所有 url,等等,尽可能细化。我已经搜索了以前的帖子,但仍然找不到解决问题的方法。

运行我的代码后,它会从我的起始 url 中抓取链接,但不会抓取起始 url 上的链接。我一直在尝试解决这个问题,但不能。

我相信我的问题可能与我正在设置但不确定的规则有关。我已经删除了允许的域,并确保在我的代码中包含了 follow=True,并且我知道包含 callback=parse 会是一个问题,但似乎包含 callback='parse_item' 不是,我我也尝试删除它,这没有什么区别。

我没有对管道或设置文件夹进行更改,因为我不确定我会对它们做什么。我的项目非常标准,它是一个字段,我使用它来加载它,从 hospitalone.items 导入 HospitaloneItem。我的其余代码如下:

class HopitaloneSpider(CrawlSpider):
    name = 'example.org'
    #allowed_domains = ['http://>example.org/']
    start_urls = [
        'http://example.org/'
    ]

    rules = (
        #Rule(SgmlLinkExtractor(allow='>example\.org', )),
        Rule(SgmlLinkExtractor(allow=('\w+$', )), callback='parse_item', follow=True),
    )

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        item = HospitaloneItem()
        item['name'] = hxs.select('//a').extract()
        return item

任何帮助都会很棒。非常感谢。

4

1 回答 1

2

我认为问题在于您使用的是 CrawlSpider,因此您不能覆盖 parse 方法。这是一个可能对您有所帮助的链接:http: //doc.scrapy.org/en/latest/topics/spiders.html#crawling-rules

按照示例实现不同的解析函数

于 2012-08-29T22:10:40.467 回答