首先,请参阅此主题-我想您会在这里找到所有答案。
下载者使用的网址的顺序?仅在使用所有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_requestsmethod中读取文件并产生url
:请参阅此答案。
因此,您应该这样做:
def start_requests(self): with precs.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希望能有所帮助。



