2015-10-16 58 views
0

在那些日子裏,我正在Python中使用Scrapy製作Spider。 它基本上是一個簡單的蜘蛛類,它可以簡單地解析Html頁面中的某個字段。 我不使用starts_url [] Scrapy場,但我使用的是個性化列表如下:Scrapy有一個項目限制?

class start_urls_mod(): 
def __init__(self, url, data): 
    self.url=url 
    self.data=data 

#Defined in the class: 
url_to_scrape = [] 
#Populated in the body in this way 
self.url_to_scrape.append(start_urls_mod(url_found), str(data_found)) 

網址傳遞這樣

for any_url in self.url_to_scrape: 
    yield scrapy.Request(any_url.url, callback=self.parse_page) 

它的工作原理與良好的數量有限網址像3000.

但是,如果我嘗試做一個測試,它發現約32532 url刮。 在JSON輸出文件中,我發現只有約3000個URL被刮掉。

我的函數調用它的自我:

yield scrapy.Request(any_url.url, callback=self.parse_page) 

所以現在的問題是,沒有爲Scrapy項目的一些內存限制?

+1

Theres手冊中關於內存使用限制的全部內容。問題是,當調用隨機網址時,你可能會發現有人託管1GB文件..這可能會嚴重破壞你的服務器拉動。你是否開啓了內存使用擴展(請參閱http://doc.scrapy.org/en/latest/topics/extensions.html#topics-extensions-ref-memusage) – Jmons

+0

@JamesTaylor所以我需要增加MEMUSAGE_LIMIT_MB並設置一個很高的值,以不停止該程序? – RedVelvet

+1

如果你遇到內存限制,Scrapy/Python會拋出一個異常來表明這一點。如果是這樣,確定爲什麼它使用的內存是35k請求並不是很多人坐在那裏(它們並不是那麼大)。 Scrapy不應該持續響應對象或項目的時間長於處理它們所需的時間。 – Rejected

回答

0

不,如果您尚未在您的設置中指定CLOSESPIDER_ITEMCOUNT

也許scrapy在您的請求中發現重複內容,請檢查您的日誌中是否包含類似dupefilter/filtered的內容。