我想用scrapy廢棄一些論壇,並將數據存儲在數據庫中。但是,我不知道在更新數據庫時要高效地做到這一點。這是我的蜘蛛是什麼樣子:刮scrapy論壇與scrapy
class ForumSpider(CrawlSpider):
name = "forum"
allowed_domains= ["forums.example.com"]
start_urls = ["forums.example.com/index.php"]
rules = (
Rule(SgmlLinkExtractor(allow=(r'/forum?id=\d+',)),
follow=True, callback='parse_index'),
)
def parse_index(self, response):
hxs = HtmlXPathSelector(response)
#parsing....looking for threads.....
#pass the data to pipeline and store in to the db....
我的問題是,當我再次放棄當日的論壇上,說一個星期後,沒有一點要經過的所有網頁,因爲新的線程或與任何線程新的帖子將在其他不活動的帖子之上。我的想法是檢查論壇的第一頁(forums.example.com/forum?id=1),如果它在第一頁找到了具有相同URL和相同回覆數的線程。沒有意義去第二頁。所以蜘蛛應該繼續到另一個論壇(forums.example.com/forum?id=2)。我嘗試修改start_urls和rules,但似乎一旦蜘蛛運行就沒有響應。有沒有辦法在scrapy中做到這一點?
我的第二個問題是如何爲不同的蜘蛛使用不同的管道。我發現堆棧溢出。但似乎scrapy不是爲了做到這一點而設計的,似乎你認爲爲不同的網站創建一個新的項目。
我使用錯誤的工具來做到這一點嗎?或者我錯過了一些東西。我想過使用機械化和lxml來做到這一點。但我需要實現扭曲和Unicode處理等,這些讓我想用scrapy堅持
感謝