【问题标题】:Scrapy: scraping a list of linksScrapy:抓取链接列表
【发布时间】:2015-01-16 12:32:57
【问题描述】:

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

我正在尝试抓取一个包含首页链接的网站。类似于this

现在,因为我想抓取页面上显示的项目的详细信息,所以我提取了它们各自的 URL。

我已将这些 URL 保存在一个列表中。

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

为了更好地理解:

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

这是我抓取的 URL 列表。现在我想启动一个蜘蛛来单独抓取链接。

我该怎么做?

【问题讨论】:

  • 我认为您应该重新阅读earlier question 中的答案。您不会生成 URL 列表,而是从 start_request 为这些 URL 返回一个新请求对象列表。

标签: python web-scraping scrapy scrapy-spider


【解决方案1】:

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

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

否则,如果您要跟踪的 url 导致页面具有不同的结构,那么您可以为它们定义特定的方法(例如 parse1、parse2、parse3...)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    相关资源
    最近更新 更多