Scrapy:在两只蜘蛛之间传递数据

时间:2012-07-19 11:15:08

标签: python web-scraping scrapy

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

  

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

将这些外部网页网址保存到数据库。

  

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

覆盖您的其他蜘蛛中的BaseSpider.start_requests,并从您从数据库获取的网址创建请求。

答案 1 :(得分: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 = {} 属性,可能会有所帮助。