Scrapy:遵循特定规则的URL

时间:2013-01-14 14:17:28

标签: url sitemap scrapy rule web-crawler

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

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

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个不同的页面

谢谢!

2 个答案:

答案 0 :(得分:3)

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

start_urls = ['http://www.example.com/%s.html'页面的%页面在xrange(1,1000)]

答案 1 :(得分: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而过载,所以要小心。