2012-09-01 64 views
0

我有一個Scrapy Crawler,可以從論壇上抓取一些指南。 我試圖抓取數據的論壇有很多頁面。 問題是我無法提取我想要的鏈接,因爲沒有特定的類或ID來選擇。 url結構是這樣的:http://www.guides.com/forums/forumdisplay.php?f=108&order=desc&page=1 很顯然我可以將desc & page = 1之後的數字更改爲2,3,4等等,但是我想知道做到這一點的最佳選擇是什麼。 我該怎麼做到這一點?如何使用Scrapy在論壇上抓取其他特定頁面?

PS:這是蜘蛛的代碼 http://dpaste.com/hold/794794/

+0

嘗試使用['BaseSpider.start_requests()'](http://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spider.BaseSpider.start_requests) – warvariuc

回答

1

我似乎無法打開論壇網址(總是重定向我到另一個網站),所以這裏是一個盡力而爲的建議:

如果有鏈接到線程頁面上的其他頁面,您可以創建一個搜尋器規則以明確地遵循這些鏈接。使用CrawlSpider爲:

class GuideSpider(CrawlSpider): 
    name = "Guide" 
    allowed_domains = ['www.guides.com'] 
    start_urls = [ 
     "http://www.guides.com/forums/forumdisplay.php?f=108&order=desc&page=1", 
    ] 

    rules = [ 
     Rule(SgmlLinkExtractor(allow=("forumdisplay.php.*f=108.*page=",), callback='parse_item', follow=True)), 
    ] 

    def parse_item(self, response): 
     # Your code 
     ... 

蜘蛛會自動刪除重複的請求,即它不會遵循相同的URL兩次即使兩個頁面鏈接到它。如果頁面上只有一個或兩個查詢參數不同(例如,order=asc),那麼您可以在Rule構造函數中指定deny=(...)將其過濾掉。

+0

已解決。非常感謝! – Haldir87