1

我需要创建一个从网站抓取一些数据的蜘蛛。部分数据是外部 URL。

我已经创建了从根站点抓取数据的蜘蛛,现在我想为外部网页编写蜘蛛。

我正在考虑创建一个使用 SgmlLinkExtractor 跟踪每个外部网页中的某些特定链接的爬虫。

将 start_url 列表传达给第二个蜘蛛的推荐方法是什么?

我的想法是为项目生成一个 json 文件并读取第二个蜘蛛的 start_requests 中的属性。

4

2 回答 2

2

我已经创建了从根站点抓取数据的蜘蛛,现在我想为外部网页编写蜘蛛。

将这些外部页面 url 保存到数据库中。

将 start_url 列表传达给第二个蜘蛛的推荐方法是什么?

覆盖BaseSpider.start_requests您的其他蜘蛛并从您从数据库获得的 url 创建请求。

于 2012-07-19T18:27:58.677 回答
0

这个问题很模糊,但这是一种方法(??)

class PracticeSpider(BaseSpider):
    name = "project_name"
    allowed_domains = ["my_domain.org"]

    def start_requests(self):
        start_urls = "The First Page URL"
        return [Request(start_urls, callback=self.parse)]

    def parse(self, response):
        # parse the first page
        yield self.pageParser(response)

        # grab the external URLs you want to follow
        ext_urls = ...

        for url in ext_urls:
            yield Request(url, callback=self.pageParser)

    def pageParser(self, response):
        # parse the page
        return items

Request 中还有一个meta={}属性可能会有所帮助。

于 2012-07-19T18:54:30.033 回答