Прамежкавае ПЗ проксі Scrapy: вяртанне Request супраць None
Вярніце кіраванне пасля прызначэння проксі Scrapy, замест таго каб міжвольна запатрабаваць паўторнага планавання таго ж запыту да загрузкі.
Адрас проксі змяняецца ў журнале. Прызначэнне ніколі не з'яўляецца ў журнале доступу проксі. Праверце, ці прапускае ваша прамежкавае ПЗ запыт да загрузчыка наогул.
У прамежкавым ПЗ загрузчыка Scrapy вяртанне Request азначае паўторнае планаванне гэтага запыту. Гэта не азначае «працягвайце адпраўляць гэты аб'ект з метаданымі, якія я толькі што змяніў».
Для селектара, які выбірае толькі маршрут, важная форма такая:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
Гэты фрагмент паказвае бягучую форму перахопу; выкарыстоўвайце інтэрфейс прамежкавага ПЗ, які падтрымлівае ўсталяваны выпуск Scrapy. Селектар павінен вярнуць слушную канчатковую кропку і яўна апрацаваць недаступны пул. Публічнае абышліца, якое дазваляе публічных пасярэднікаў, можа браць HTTP-кандыдатаў з спісу HTTP-проксі для гэтага значэння вяртання.
Вяртанне None дазваляе астатняму прамежкаваму ПЗ запыту і загрузчыку працягваць. Вяртанне іншага Request карысна, калі вы наўмысна замяняеце або паўтараеце працу, але патрабуе прычыны і ўмовы выхаду.
Рататар, які кожны раз вяртае той жа запыт, можа раз за разам запускаць свой код выбару, так і не ўсталяваўшы злучэнне з прызначэннем. Павелічэнне тайм-аўтаў або адкрыццё дадатковых партоў проксі не выправіць гэты цыкл кіравання.
Разглядайце ўваход у прамежкавае ПЗ, паводзіны пры вяртанні і першую рэальную сеткавую спробу як асобныя падзеі. Радок журнала «выбраны проксі» сведчыць толькі пра тое, што селектар запусціўся. Ён не сведчыць, што запыт з выбранай канчатковай кропкай быў адпраўлены.