Scrapy:抓取链接列表

时间:2015-01-16 12:32:58

标签: python web-scraping scrapy scrapy-spider

这个问题在某种程度上是我之前提出的this问题的后续问题。

我正在尝试搜索包含第一页上某些链接的网站。与this类似的东西。

现在,由于我想要抓取页面上显示的项目的详细信息,我已经提取了各自的网址。

我已将这些网址保存在列表中。

如何启动蜘蛛单独刮取页面?

为了更好地理解:

[urlA, urlB, urlC, urlD...]

这是我抓取的网址列表。现在我想发射一个蜘蛛来单独刮掉链接。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我假设您要关注的网址会导致具有相同或相似结构的网页。如果是这种情况,你应该这样做:

from scrapy.contrib.spiders import CrawlSpider
from scrapy.selector import Selector
from scrapy.http import Request

class YourCrawler(CrawlSpider):

   name = 'yourCrawler'
   allowed_domains = 'domain.com'
   start_urls = ["htttp://www.domain.com/example/url"]


   def parse(self, response):
      #parse any elements you need from the start_urls and, optionally, store them as Items.
      # See http://doc.scrapy.org/en/latest/topics/items.html

      s = Selector(response)
      urls = s.xpath('//div[@id="example"]//a/@href').extract()
      for url in urls:
         yield Request(url, callback=self.parse_following_urls, dont_filter=True)


   def parse_following_urls(self, response):
       #Parsing rules go here

否则,如果您想要关注的网址指向具有不同结构的网页,那么您可以为它们定义特定的方法(例如parse1,parse2,parse3 ......)。