2012-08-29 40 views
1

我一直在努力抓取一个网站,并卡住了。我需要从一个网址开始,抓取所有源自它的网址,以及源自这些网址的所有网址等等。我搜索了以前的帖子,仍然无法找到解决我的问题。使用Scrapy,无法抓取链接通过我的起始网址

运行我的代码后,它会从我的起始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 

任何帮助将是伟大的。非常感谢。

回答

2

我认为这个问题是因为你使用的是CrawlSpider,你不能重载解析方法。 这里是一个链接,可以帮助你:http://doc.scrapy.org/en/latest/topics/spiders.html#crawling-rules

按照例子,实现不同的功能解析

+0

减去是正确的,你不应该覆盖'parse'功能,除了您定义'parse_item '作为规则中的回调。如果您相应地更改当前解析函数的名称,可能您的蜘蛛将起作用。还要检查正则表达式。 – herrherr