2 回答

TA貢獻1801條經驗 獲得超8個贊
首先,請參閱此主題-我想您會在這里找到所有答案。
下載器使用的URL的順序?僅在使用所有start_url之后,下載程序才會使用just_test1,just_test2發出的請求嗎?(我進行了一些測試,答案似乎是否定的)
您說得對,答案是No
。該行為是完全異步的:啟動蜘蛛程序后,start_requests
將調用(source)方法:
def start_requests(self):
for url in self.start_urls:
yield self.make_requests_from_url(url)
def make_requests_from_url(self, url):
return Request(url, dont_filter=True)
決定訂單的是什么?為什么和如何執行此命令?我們如何控制它?
默認情況下,沒有預先定義的順序-你可以不知道什么時候Requests
從make_requests_from_url
抵達的-它是異步的。
有關如何控制訂單的信息,請參見此答案。長話短說,您可以使用鍵覆蓋start_requests
并標記“ yield” (如)。例如,的值可以是找到該網址的行號。Requests
priority
yield Request(url, meta={'priority': 0})
priority
這是處理文件中已包含許多URL的好方法嗎?還有什么?
我認為您應該直接在start_requests
method中讀取文件并產生url :請參閱此答案。
因此,您應該這樣做:
def start_requests(self):
with codecs.open(self.file_path, u"r", encoding=u"GB18030") as f:
for index, line in enumerate(f):
try:
url = line.strip()
yield Request(url, meta={'priority': index})
except:
continue
添加回答
舉報