GBProxies

วิธีตั้งค่า Rotating Proxy ใน Scrapy

HttpProxyMiddleware ที่มีอยู่แล้วใน Scrapy อ่าน proxy จาก request.meta ด้วยเกตเวย์หมุนเวียน คุณตั้งค่า URL หนึ่งรายการและทุกคำขอยังคงได้รับ IP ใหม่

ขั้นตอน

  1. เปิดใช้งาน HttpProxyMiddleware (เปิดโดยค่าเริ่มต้น)
  2. ตั้งค่า meta={"proxy": url} ในแต่ละคำขอ หรือใน start_requests
  3. ใส่ username และ password ใน URL ของ proxy
  4. ลด CONCURRENT_REQUESTS_PER_DOMAIN หากเว็บไซต์ยังจำกัดอัตรา

ตัวอย่างโค้ด

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}

แทนที่ USERNAME และ PASSWORD ด้วยข้อมูลเข้าสู่ระบบ proxy จากหน้า Proxies ของคอนโซล พอร์ต 10000 คือ residential HTTP; ดูพอร์ตของทุกผลิตภัณฑ์ด้านล่าง

เคล็ดลับ

  • ตั้ง IMAGES_ENABLED เป็น off และหลีกเลี่ยงการดาวน์โหลดสื่อเพื่อประหยัด GB
  • ใช้ DOWNLOAD_TIMEOUT 30 และ RETRY_TIMES 3 เพื่อการทำงานที่มั่นคง

คำถามทั่วไป

ฉันต้องการ middleware สำหรับการหมุน IP หรือไม่?

ไม่จำเป็น Gateway จะหมุน IP ให้คุณ แค่ใช้ URL proxy หนึ่งอันก็พอ

วิธีตั้งค่า Rotating Proxy ใน Scrapy