2012-08-29 38 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