我想用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坚持
感谢