Cách thiết lập Proxy xoay vòng trong Scrapy
HttpProxyMiddleware tích hợp sẵn của Scrapy đọc proxy từ request.meta. Với gateway xoay vòng, bạn đặt một URL và mọi yêu cầu vẫn nhận được một IP mới.
Các bước
- Giữ HttpProxyMiddleware được bật (nó được bật theo mặc định)
- Đặt meta={"proxy": url} trên mỗi yêu cầu, hoặc trong start_requests
- Đặt tên người dùng và mật khẩu vào URL proxy
- Giảm CONCURRENT_REQUESTS_PER_DOMAIN nếu trang web vẫn giới hạn tốc độ
Mã ví dụ
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}Thay thế USERNAME và PASSWORD bằng thông tin đăng nhập proxy từ trang Proxies của bảng điều khiển. Cổng 10000 là HTTP residential; xem các cổng của mỗi sản phẩm bên dưới.
Mẹo
- Tắt IMAGES_ENABLED và tránh tải media để tiết kiệm GB
- Đặt DOWNLOAD_TIMEOUT 30 và RETRY_TIMES 3 để chạy ổn định
Câu hỏi thường gặp
Tôi có cần middleware xoay vòng không?
Không. Cổng gateway sẽ xoay IP cho bạn; chỉ cần một URL proxy là đủ.