0

我有一个 Scrapy Crawler,它可以从论坛中抓取一些指南。我试图抓取数据的论坛有很多页面。问题是我无法提取我想要的链接,因为没有特定的类或 ID 可供选择。url结构是这样的: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/

4

1 回答 1

1

我似乎无法打开论坛 URL(总是将我重定向到另一个网站),所以这是一个尽力而为的建议:

如果线程页面上有指向其他页面的链接,您可以创建爬虫规则以明确跟踪这些链接。为此使用 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=(...)在 Rule 构造函数中指定以将它们过滤掉。

于 2012-09-03T18:15:58.980 回答