2013-12-17 37 views
0

我正在使用Scrapy刮掉以下网站的帖子。我写了代码,将给我的max_id或最新的帖子号码。例如,对于http://papa-gen.livejournal.com/:如果我理论上有max_id,我将能够通过max_id创建for循环1,并且我应该能够删除所有帖子。访问网页上的上一个和下一个箭头

问题是,没有像max_id那样多的帖子。例如,上面的网站的max_id是12月17日发布的2870789,但是12月16日发布的帖子的数量是2870614,相差175。如果我遍历所有的2870789,我会到达每个帖子,但是代码当然不会非常有效。我的想法是使用我的Python代码访问网站上的前一个和前进按钮,并以这种方式循环。

有人可以解释我可以如何使用Scrapy完成此操作吗?

+0

您可以使用正则表达式来设置遵循哪些链接的规则 – dm03514

回答

2

Scrapy有extensive documentation。有使用CrawlSpider类来完成你所描述的东西,你可以修改这个样子的an example ...

class MySpider(CrawlSpider): 
    name = 'livejournal.com' 
    allowed_domains = ['livejournal.com'] 
    start_urls = ['http://www.papa-gen.livejournal.com'] 

    rules = (
     Rule(SgmlLinkExtractor(allow=('skip=',)), callback='parse_item'), 
    ) 

    def parse_item(self, response): 
     # here is where the parsing happens 
     pass 

的基本思想是指定匹配链接的规则。 Scrapy将它们添加到要访问的url列表中,然后在获取url时使用页面数据调用callback函数。

相关问题