我一直在抓取一个网站并且卡住了。我需要从一个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
任何帮助都会很棒。非常感谢。
答案 0 :(得分:2)
我认为问题是因为你使用的是CrawlSpider,所以你不能覆盖parse方法。 以下链接可能对您有所帮助:http://doc.scrapy.org/en/latest/topics/spiders.html#crawling-rules
按照示例执行不同的解析函数