Scrapy
将 Scrapy 与 Oxylabs 代理集成,以使用简单的分步指南构建快速的异步网页爬虫。
Scrapy 是一个开源 Python 框架,专为大规模网页抓取和数据提取而设计。默认情况下,Scrapy 会直接从你的本地网络路由请求。
按照以下步骤集成下面的 Oxylabs 代理:
选择集成方式
Scrapy 支持通过代理路由请求的两种主要方法: 请求 Meta 参数 (按请求配置)和 自定义下载中间件 (全项目配置)。
方法 1:请求 Meta 参数
将代理认证详情直接传入单个 scrapy.Request 实例,通过 meta 字典。此方法适合简单爬虫,或当不同请求需要特定代理配置时使用。
import scrapy
class OxylabsSpider(scrapy.Spider):
name = "oxylabs_spider"
def start_requests(self):
url = "https://ip.oxylabs.io/"
proxy = "http://username:password@host:port"
yield scrapy.Request(
url=url,
callback=self.parse,
meta={"proxy": proxy}
)
def parse(self, response):
ip_address = response.css("pre::text").get()
self.logger.info(f"通过 Oxylabs 代理已连接。当前 IP: {ip_address}")方法 2:自定义下载中间件(推荐)
若要在不修改爬虫代码的情况下自动将代理应用到所有请求,请实现一个自定义 Scrapy 下载中间件。
打开 Scrapy 项目的 middlewares.py 文件,并添加 OxylabsProxyMiddleware 类:
class OxylabsProxyMiddleware:
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings)
def __init__(self, settings):
self.username = settings.get("OXYLABS_USERNAME")
self.password = settings.get("OXYLABS_PASSWORD")
self.endpoint = settings.get("OXYLABS_ENDPOINT")
def process_request(self, request, spider):
host = f"http://{self.username}:{self.password}@{self.endpoint}"
request.meta["proxy"] = host然后,注册该中间件,并在 settings.py:
# Oxylabs Credentials
OXYLABS_USERNAME = "username"
OXYLABS_PASSWORD = "password"
OXYLABS_ENDPOINT = "host:port"
# Enable Downloader Middleware
DOWNLOADER_MIDDLEWARES = {
"myproject.middlewares.OxylabsProxyMiddleware": 100,
"scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware": 110,
}配置你的代理
调整代理详情和 Oxylabs 代理用户凭据(在 Oxylabs 控制面板中创建)以匹配你选择的代理类型:
住宅代理和移动代理
主机: pr.oxylabs.io
端口: 7777
用户名: customer-username
密码: password
注意: 别忘了添加 customer- 用户名前缀。
你还可以使用 附加参数 搭配住宅代理和移动代理来设置地理位置(国家/地区、州、省、市等)并控制会话。查看 住宅代理文档 了解更多。下表概述了可用参数及其示例值。
主机: us-pr.oxylabs.io
端口: 10000
用户: customer-username-cc-US
用户: customer-username-st-US_texas
用户: customer-username-city-paris
用户: customer-username-cn-NA
用户: customer-username-cc-US-postalcode-90210
用户: customer-username-ASN-21928
会话 (最长 1440 分钟)
用户: customer-username-sessid-qwerty123-sesstime-1440
主机: us-pr.oxylabs.io
端口: 10001
数据中心代理
主机: dc.oxylabs.io
端口: 8001
用户名: user-userername
密码: password
注意: 别忘了添加 user- 用户名前缀。
独享数据中心代理(企业版)
主机: 1.2.3.4 (来自你的 代理列表)
端口: 60000 (HTTP)或 1180 (SOCKS5)
用户名: username
密码: password
对于企业版独享数据中心代理(通过销售团队购买),你需要从已获取的 代理列表.
独享数据中心代理(自助服务版)
主机: ddc.oxylabs.io
端口: 8001
用户名: user-userername
密码: password
注意: 别忘了添加 user- 用户名前缀。
ISP代理
主机: isp.oxylabs.io
端口: 8001
用户名: user-username
密码: password
注意: 别忘了添加 user- 用户名前缀。
对于 ISP 代理,端口会分配给一个特定的 IP 地址及其位置。因此,端口 8001 将始终选择你 代理列表.
中的第一个 IP。如果你希望每个请求都获得不同的 IP,请将端口改为 8000 以启用 代理轮换.
独享ISP代理
主机: disp.oxylabs.io
端口: 8001
用户名: user-USERNAME
密码: PASSWORD
注意: 别忘了添加 user- 用户名前缀。
最后更新于
这有帮助吗?

