我是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个不同的页面
谢谢!
答案 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而过载,所以要小心。