2012-07-19 18 views
0

我需要创建一个蜘蛛来抓取网站上的一些数据。 部分数据是外部URL。Scrapy:通过2个蜘蛛之间的数据

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

我正在考虑创建一个使用SgmlLinkExtractor来追踪每个外部网页中的特定链接的爬行页。

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

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

回答

1

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

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

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

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

+0

谢谢,这正是我所做的。 我将url保存到一个文件中,第二个蜘蛛在start_requests中读取并解析它。 – DjangoPy 2012-07-20 07:26:36

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 

还有一个元= {}属性的请求,可能会有所帮助。