如何使用Scrapy在论坛上刮取其他特定页面?

时间:2012-09-01 14:31:11

标签: scrapy

我有一个Scrapy Crawler,可以从论坛中抓取一些指南。 我正在尝试抓取数据的论坛有很多页面。 问题是我无法提取我想要的链接,因为没有要选择的特定类或ID。 网址结构如下:http://www.guides.com/forums/forumdisplay.php?f=108&order=desc&page=1 显然我可以在desc& page = 1之后将数字更改为2,3,4等等,但我想知道这样做的最佳选择是什么。 我怎么能做到这一点?

PS:这是蜘蛛代码 http://dpaste.com/hold/794794/

1 个答案:

答案 0 :(得分: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两次。如果页面上的URL非常相似且只有一个或两个查询参数不同(例如,order=asc),则可以在规则构造函数中指定deny=(...)来过滤它们。