Cara Menetapkan Proxy Berputar dalam Scrapy
HttpProxyMiddleware terbina dalam Scrapy membaca proxy dari request.meta. Dengan gateway berputar anda menetapkan satu URL dan setiap permintaan masih mendapat IP baru.
Langkah-langkah
- Pastikan HttpProxyMiddleware diaktifkan (ia aktif secara lalai)
- Tetapkan meta={"proxy": url} pada setiap permintaan, atau dalam start_requests
- Masukkan nama pengguna dan kata laluan dalam URL proxy
- Kurangkan CONCURRENT_REQUESTS_PER_DOMAIN jika laman web masih menghadkan kadar
Contoh kod
import scrapy
PROXY = "http://USERNAME-cc-gb:PASSWORD@gw.gbproxies.cc:10000"
class PricesSpider(scrapy.Spider):
name = "prices"
start_urls = ["https://example.com/catalog"]
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url, meta={"proxy": PROXY})
def parse(self, response):
for href in response.css("a.product::attr(href)").getall():
yield response.follow(href, self.parse_item, meta={"proxy": PROXY})
def parse_item(self, response):
yield {"title": response.css("h1::text").get(), "url": response.url}Gantikan USERNAME dan PASSWORD dengan log masuk proxy dari halaman Proxies di konsol. Port 10000 adalah residential HTTP; lihat port setiap produk di bawah.
Petua
- Matikan IMAGES_ENABLED dan elakkan muat turun media untuk menjimatkan GB
- Gunakan DOWNLOAD_TIMEOUT 30 dan RETRY_TIMES 3 untuk operasi yang stabil
Soalan biasa
Adakah saya memerlukan middleware putaran?
Tidak. Gateway berputar untuk anda; satu URL proxy sudah mencukupi.