2012-05-30 37 views
1

我正在使用Scrapy在網站上進行爬網。我需要抓取的鏈接格式爲http://www.somesite.com/details.html?pageId=<some_integer_id>some_integer_id的值從1延伸到100(不完全是100)。我做的是這樣的:Scrapy +請求參數中的更改

1.I創建一個函數來生成的URL列表:

def generateURLs(self): 
    url_list = [] 
    for i in range(1, 101): 
     url_list.append('http://www.somesite.com/details.html?pageId=%d' % i) 
    return url_list 

2.使用此功能設置的Scrapystart_urls這樣的值:

def __init__(self): 
    self.start_urls = self.generateURLs() 

這是推薦使用Scrapy的方式,還是有其他更好的方法來做到這一點,我只需要更改請求參數的值?

謝謝。

+1

AFAIK,這是唯一正確的方法來做到這一點。 Scrapy的BaseSpider需要'start_urls'來尋找網址來抓取。這意味着如果你真的不喜歡這樣,你可以[override](http://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spider.BaseSpider.start_requests)'start_requests() '函數來產生你的請求。 – Mayli

回答

7

這種方法聽起來很好,沒有「黃金」的方法。

但是,考慮到Scrapy調用你可以選擇start_requests像start_requests的重寫:

def start_requests(self): 
    for i in range(1, 101): 
     yield Request(url='http://www.somesite.com/details.html?pageId={0}'.format(i), callback=self.my_callback) 

效果是一樣的,用更少的代碼。