2

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

谢谢!

4

2 回答 2

3

如果页面都是这种形式(www.example.com/x.html),那么您可以执行以下操作:

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

于 2013-01-14T15:49:52.180 回答
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 而超载,所以要小心。

于 2013-01-18T07:10:40.177 回答