Scrapy proxy middleware: Request nasuprot None kao povratne vrijednosti
Vratite kontrolu nakon dodjele Scrapy proxyja umjesto da nenamjerno ponovno zakažete isti zahtjev prije preuzimanja.
Adresa proxyja se mijenja u dnevniku. Odredište se nikada ne pojavljuje u pristupnom dnevniku proxyja. Provjerite pušta li vaš middleware zahtjev uopće do preuzimača.
U Scrapyjevom middlewareu preuzimača, vraćanje Request znači ponovno zakazivanje tog zahtjeva. To ne znači „nastavite slati ovaj objekt s metapodacima koje sam upravo promijenio“.
Za selektor koji samo bira rutu, važan oblik je:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
Ovaj isječak prikazuje trenutni oblik kuke; koristite sučelje middlewarea koje podržava instalirano izdanje Scrapyja. Selektor mora vratiti valjanu krajnju točku i izričito obraditi nedostupan skup. Javno pretraživanje koje dopušta javne posrednike može za tu povratnu vrijednost crpiti HTTP kandidate iz popisa HTTP proxyja.
Vraćanje None dopušta ostatku middlewarea zahtjeva i preuzimaču da nastave. Vraćanje drugog Requesta korisno je kada namjerno zamjenjujete ili ponavljate posao, ali traži razlog i uvjet izlaska.
Rotator koji svaki put vraća isti zahtjev može iznova izvršavati vlastiti kod za odabir, a da nikada ne uspostavi vezu s odredištem. Povećavanje vremenskih ograničenja ili otvaranje dodatnih proxy portova ne može popraviti tu petlju upravljanja tokom.
Promatrajte ulazak u middleware, ponašanje pri vraćanju i prvi stvarni mrežni pokušaj kao zasebne događaje. Redak u dnevniku „odabran proxy“ dokazuje samo da je selektor radio. Ne dokazuje da je zahtjev s odabranom krajnjom točkom poslan.