【问题标题】:Scrapy: Follow URLs with a particular ruleScrapy:遵循特定规则的 URL
【发布时间】:2013-01-14 14:17:28
【问题描述】:

我是 Scrapy 的新手,在任何地方都找不到我需要做的事情。

我需要抓取一组非常相似的 URL,但我无法从一个到另一个访问。例如,我需要抓取以下 URL:

www.example.com/1.html
www.example.com/2.html
(...)
www.example.com/1000.html

但第一页没有链接到其他页面,即是独立的。

我该怎么做? (对不起我的英语)

类似这样的:

class MySpider(BaseSpider):
   name = 'example.com'
   allowed_domains = ['example.com']
   Start_urls = [
      'http://www.example.com/1.html',
      'http://www.example.com/2.html',
      'http://www.example.com/3.html',
   ]

但对于超过 3 个不同的页面

谢谢!

【问题讨论】:

    标签: url sitemap scrapy rule web-crawler


    【解决方案1】:

    如果页面都是那种形式 (www.example.com/x.html),那么你可以这样做:

    start_urls = ['http://www.example.com/%s.html' % page for page in xrange(1, 1000)]

    【讨论】:

    • 优秀。请记住将此标记为已接受的答案,并在您达到足够的代表时对其进行投票。 :)
    【解决方案2】:

    您应该覆盖 start_requests 而不是 Start_urls 例如:

    def start_requests(self):
        base_url = 'http://www.example.com/
        for i in xrange(1, 10000):
            url = base_url + str(i) + '.html'
            yield Request(url, dont_filter=False, callback='parse_method')
    

    此外,您可以从队列中提供您的 URL 列表:

    def start_requests(self):
        while True:
            url = queue.get()
            yield Request(url, dont_filter=False, callback='parse_method')
    

    请注意,scrapy 的调度器可能会因同时调度大量 URL 而过载,因此请小心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      相关资源
      最近更新 更多