2013-01-14 117 views
2

我是Scrapy的新手,我無法在任何地方找到我需要做的事情。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

您應該重寫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') 

此外,你可以從隊列中提供您的網址列表:

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

請注意scrapy的調度程序可能會因爲同時調度大量的URL而超載,所以要小心。

+0

這正是我所需要的。謝謝 –

3

如果頁面是所有形式(www.example.com/x.html)的,那麼你可以做這樣的事情:

start_urls = ['http://www.example.com/ %s.html」%的網頁頁面中的xrange(1,1000)]

+0

謝謝...它的工作 –

+0

優秀。請記住將此標記爲已接受的答案,並在達到足夠的代表時加以注意。 :) – Talvalin