Alamat proxy berubah di log. Tujuan tidak pernah muncul di log akses proxy. Periksa apakah middleware Anda membiarkan permintaan mencapai pengunduh sama sekali.

Dalam middleware pengunduh Scrapy, mengembalikan Request berarti menjadwalkan ulang permintaan itu. Itu bukan berarti “terus kirim objek ini dengan metadata yang baru saja saya ubah”.

Untuk selektor yang hanya memilih rute, bentuk pentingnya adalah:

def process_request(self, request):
    request.meta['proxy'] = self.choose_proxy()
    return None

Cuplikan ini menunjukkan bentuk kail saat ini; gunakan antarmuka middleware yang didukung oleh rilis Scrapy yang terpasang. Selektor harus mengembalikan titik akhir yang valid dan menangani kumpulan yang tidak tersedia secara eksplisit. Perayapan publik yang mengizinkan perantara publik dapat mengambil kandidat HTTP dari daftar proxy HTTP untuk nilai kembalian itu.

Mengembalikan None membiarkan middleware permintaan lainnya dan pengunduh melanjutkan. Mengembalikan Request lain berguna ketika Anda sengaja mengganti atau mencoba ulang pekerjaan, tetapi itu membutuhkan alasan dan kondisi keluar.

Rotator yang mengembalikan permintaan yang sama setiap kali dapat berulang kali menjalankan kode pemilihannya tanpa pernah membuat koneksi ke tujuan. Menaikkan batas waktu atau membuka lebih banyak porta proxy tidak dapat memperbaiki lingkaran alur kendali itu.

Periksa entri middleware, perilaku pengembalian, dan upaya jaringan pertama yang sebenarnya sebagai peristiwa terpisah. Baris log yang menyatakan “proxy dipilih” hanya membuktikan bahwa selektor berjalan. Itu tidak membuktikan bahwa permintaan dengan titik akhir yang dipilih telah dikirim.

Artikel terkait