开始试用

Scrapy 代理

将住宅、移动或 ISP 代理接入 Scrapy。通过 NodeMaven 路由每一个请求,自动轮换 IP,定位特定地区,并让凭据保存在代码之外

95% 纯净 IP 率,有保障
住宅、移动 & ISP 代理
24/7 专家支持

首个代理
返现
市场上

每月将已用流量
转化为可重复使用的
代理额度,即可获得奖励

欢迎礼
价值 $100+

  • 质量 & 速度过滤器
  • 邮政编码级定向
  • 专属代理专家

独家质量保证

每当代理表现不佳
即可获得价值 $1 的奖励流量

了解更多

什么是 Scrapy, 为什么要使用代理?

Scrapy 是一个开源 Python 框架,用于构建网络爬虫并从网站提取数据。代理可帮助 Scrapy 项目减少基于 IP 的限制、采集特定地区的数据,并将请求分散到不同的 IP 地址上以实现扩展。

Scrapy 内置的 `HttpProxyMiddleware` 支持带认证的代理。借助 NodeMaven,您可以连接 住宅代理, 移动代理,或 ISP 代理 并为不同的抓取工作流选择轮换会话或粘性会话

仅需 $3.50 即可开始测试高质量代理

仅需 $3.50 即可开始测试高质量代理

如何配置 NodeMaven 代理 在 Scrapy 中

使用项目级下载器中间件,将 NodeMaven HTTP 代理接入 Scrapy。 本示例使用 Books to Scrape,一个专为网页抓取练习打造的沙盒站点

步骤 1

安装 Scrapy 并创建项目

创建并激活 Python 虚拟环境:

python3 -m venv scrapy-env

source scrapy-env/bin/activate

安装 Scrapy:

python3 -m pip install scrapy

创建项目和示例爬虫:

scrapy startproject nodemaven_scrapy cd nodemaven_scrapy scrapy genspider books books.toscrape.com

If python3 --version 同样返回“command not found”,请从以下位置安装 Python 3: python.org 首先。

步骤 2

生成一个 NodeMaven 代理

登录到 NodeMaven 仪表板 并打开 代理设置。请选择:

  • 代理类型: 住宅、移动或 ISP
  • 位置: 选择所需的国家、地区、城市或 ISP
  • 会话: 轮换或粘性
  • 筛选: 为您的工作流程选择 IP 质量选项
  • 协议: HTTP

选择 轮换 适用于希望 NodeMaven 在各次请求之间更换出口 IP 的场景。它非常适合大规模爬取、价格监控和市场调研。

选择 粘性会话 适用于爬虫需要为 cookie、登录、翻页或其他多步骤流程保持同一 IP 的场景。

NodeMaven 在单一网关后台管理 IP 轮换,因此您无需在 Scrapy 中维护单独的代理列表。

第 3 步

安全存储您的 NodeMaven 凭据

复制 完整的代理用户名和密码 来自 NodeMaven Dashboard。

将这些凭据存储为当前终端会话的环境变量,使其保留在 Scrapy 代码之外。这样代理中间件即可使用它们,而无需将敏感信息写入 middlewares.py 或 GitHub。

安全输入您的 NodeMaven 用户名:

read -s -p "NodeMaven proxy username: " NODEMAVEN_PROXY_USER; echo

粘贴完整的用户名并按 回车。粘贴的内容不会显示出来。

输入您的代理密码:

read -s -p "NodeMaven proxy password: " NODEMAVEN_PROXY_PASS; echo

粘贴密码并按 回车。同样不会显示出来。

导出这两个变量,以便 Scrapy 可以读取:

export NODEMAVEN_PROXY_USER NODEMAVEN_PROXY_PASS

在不显示其值的情况下确认两个变量均已设置:

[ -n "$NODEMAVEN_PROXY_USER" ] && echo "NodeMaven username: set"

[ -n "$NODEMAVEN_PROXY_PASS" ] && echo "NodeMaven password: set"

您应该会看到:

NodeMaven username: set

NodeMaven password: set

重要: 这些变量仅在当前终端会话中有效。如果您关闭终端,请在运行爬虫前重新输入。

第 4 步

添加 NodeMaven 代理中间件

请确认终端位于 Scrapy 项目目录内。命令提示符中应包含 nodemaven_scrapy.

打开项目的 middlewares.py 文件,使用 Nano:

nano nodemaven_scrapy/middlewares.py

移动到文件底部,添加一个空行,然后粘贴:

import os

from urllib.parse import quote





class NodeMavenProxyMiddleware:

    def __init__(self):

        username = quote(

            os.environ["NODEMAVEN_PROXY_USER"],

            safe="",

        )

        password = quote(

            os.environ["NODEMAVEN_PROXY_PASS"],

            safe="",

        )




        self.proxy_url = (

            f"http://{username}:{password}"

            "@gate.nodemaven.com:8080"

        )




    def process_request(self, request):

        request.meta.setdefault("proxy", self.proxy_url)

重要: 该方法必须写作 __init__,前后各带两个下划线 初始化.

保存并关闭文件:

  1. 按下 Control + O.
  2. 按下 回车 以确认文件名。
  3. 按下 Control + X.

检查文件是否存在语法错误:

python3 -m py_compile nodemaven_scrapy/middlewares.py \

  && echo "Middleware syntax check: passed"

如果代码无误,终端将显示:

Middleware syntax check: passed

该中间件会读取步骤 3 中保存的凭据,生成带认证信息的 NodeMaven 代理 URL,并将其应用到 Scrapy 请求上。 quote() 函数会安全地对用户名和密码中的特殊字符进行编码。

步骤 5

在 Scrapy 中启用该中间件

请确认终端仍位于 nodemaven_scrapy 项目目录中。

打开项目设置文件:

nano nodemaven_scrapy/settings.py

查找是否已存在以下设置:

ROBOTSTXT_OBEY = True

如果已经存在,请保持不变,不要重复添加。

移动到文件底部并添加:

DOWNLOADER_MIDDLEWARES = {

    "nodemaven_scrapy.middlewares.NodeMavenProxyMiddleware": 700,

}




HTTPPROXY_ENABLED = True

如果您的项目包名不同,请将 nodemaven_scrapy 替换为该名称。对于步骤 1 中创建的项目,请完全保留所示的值。

保存并关闭文件:

  1. 按下 Control + O.
  2. 按下 回车 以确认文件名。
  3. 按下 Control + X.

检查文件是否存在 Python 语法错误:

python3 -m py_compile nodemaven_scrapy/settings.py \

  && echo "Settings syntax check: passed"

确认 Scrapy 已加载相关设置:

scrapy settings --get DOWNLOADER_MIDDLEWARES

scrapy settings --get HTTPPROXY_ENABLED

scrapy settings --get ROBOTSTXT_OBEY

输出内容应包含 NodeMaven 中间件,并显示 True 这两项设置均为:

{'nodemaven_scrapy.middlewares.NodeMavenProxyMiddleware': 700}

True

True

Scrapy 内置的 HttpProxyMiddleware 会从以下位置读取代理 URL: request.meta["proxy"]。第 4 步中添加的自定义中间件负责提供 NodeMaven 代理 URL。

请根据目标网站设置合理的下载延迟和并发限制。

步骤 6

创建示例爬虫

请确保终端位于 nodemaven_scrapy 项目目录中。

打开生成的爬虫文件:

nano nodemaven_scrapy/spiders/books.py

Nano 将显示第 1 步中创建的基础爬虫。

删除现有代码:

  1. 将光标移动到第一行。
  2. 按下 Control + K 反复按键,直到删除所有行。

将以下代码粘贴到空文件中:

import scrapy





class BooksSpider(scrapy.Spider):

    name = "books"

    allowed_domains = ["books.toscrape.com"]

    start_urls = ["https://books.toscrape.com/"]




    def parse(self, response):

        for book in response.css("article.product_pod"):

            yield {

                "title": book.css(

                    "h3 a::attr(title)"

                ).get(),

                "price": book.css(

                    ".price_color::text"

                ).get(),

                "availability": " ".join(

                    book.css(

                        ".availability::text"

                    ).getall()

                ).strip(),

            }

保存并关闭文件:

  1. 按下 Control + O.
  2. 按下 回车 以确认文件名。
  3. 按下 Control + X.

检查爬虫是否存在语法错误:

python3 -m py_compile nodemaven_scrapy/spiders/books.py \

  && echo "Spider syntax check: passed"

确认 Scrapy 能够识别该爬虫:

scrapy list

终端应显示:

爬虫语法检查:通过

books

该示例爬虫会打开 Books to Scrape,并提取每本书的:

  • 标题
  • 价格
  • 可用性

我们使用 https://books.toscrape.com/ 仅作为示例。这是一个专为演示网页抓取而创建的沙盒网站。

在实际项目中,请将 URL 和提取规则替换为您的目标网站,并确保您有权访问和抓取该网站。

截图: 该 books.py 文件,其中显示了示例 URL 以及标题、价格和库存状态的选择器,同时还包含 爬虫语法检查:通过 确认。

步骤 7

通过 NodeMaven 运行爬虫

在 Scrapy 项目目录中运行:

scrapy crawl books -O books.json

该 -O 选项会创建 books.json 如果文件已存在,则会覆盖它。

Scrapy 会将爬虫的请求通过 gate.nodemaven.com 路由,并使用生成的 NodeMaven 用户名中包含的位置和会话设置。

等待抓取完成。运行成功时应显示:

  • An HTTP 200 响应
  • 日志中提取到的图书条目
  • 无代理连接错误
  • 否 407 需要代理身份验证 错误
  • A 爬虫已关闭(已完成) 消息
  • A books.json 项目目录中的文件
步骤 8

检查 Scrapy 输出

本次抓取会创建 books.json 位于 Scrapy 项目目录内。

确认该文件已存在:

ls -lh books.json

显示提取到的记录数量,并预览前三条:

python3 -c 'import json; data=json.load(open("books.json")); print(f"Total records: {len(data)}"); print(json.dumps(data[:3], indent=2, ensure_ascii=False))'

输出应包含以下图书记录:

  • 标题
  • 价格
  • 可用性

抓取顺利完成、导出记录且没有代理认证错误,即可确认 Scrapy 已接受 NodeMaven 的代理配置。

如果爬虫返回 407 错误,请确认:

  • 已完整复制 NodeMaven 用户名
  • 密码正确
  • HTTP 端口与控制面板一致
  • Scrapy 可以读取这些环境变量
  • 凭据中的保留字符已进行 URL 编码

您的 NodeMaven 代理现已接入 Scrapy。

仅需 3.50 美元即可试用适配 Scrapy 的优质代理,并获得 750MB 流量

仅需 3.50 美元即可试用适配 Scrapy 的优质代理,并获得 750MB 流量

轻松集成代理 适用于 Python 抓取

在 Scrapy、Python Requests、Selenium 及其他 Python 网页抓取工具中,使用同一个 NodeMaven 网关和带认证的代理 URL。只需按各个库调整集成方式,NodeMaven 凭据中选定的地区和会话策略保持不变

选择 适用于 Scrapy 工作流的高级代理

使用干净、稳定的 NodeMaven IP 运行 Scrapy 爬虫,实现可扩展抓取、按地区采集数据和持久会话

住宅代理

住宅代理

真实住宅 IP,支持轮换与粘性会话。适合大规模抓取、区域数据采集,以及会评估 IP 信誉的网站

推荐用于:
移动代理

移动代理

真实 4G、5G 和 LTE IP,适用于移动端优先的目标站点,以及对 IP 信誉要求更严格的工作流

推荐用于:
ISP 代理

ISP 代理

静态住宅 ISP IP,会话时长久、响应快、带宽不限。当爬虫需要在多次抓取中保持稳定的在线身份时,可选用此类 IP

推荐用于:
不确定该选择哪种代理类型?

来自客户与合作伙伴的评价

来自信赖并使用 NodeMaven 的用户的真实反馈

专为大规模管理移动账户而打造的独特防关联手机解决方案
«NodeMaven 与 Geelark 紧密合作,为可靠的移动多账户工作流程提供支持,并在日常使用中经过测试和验证»。
专为社交媒体管理打造的云手机 & 多账号平台
«这是我们选择集成的唯一一家高质量代理提供商。NodeMaven 提供干净、稳定的流量,为我们的工作流程赋能»。
一款深受全球用户信赖的领先防关联浏览器
«我们推荐 NodeMaven 作为多账号运营的第一代理服务。它与 Dolphin Anty 紧密集成,确保设置顺畅»。
深受 900 万以上用户信赖的头号反检测浏览器
«NodeMaven 提供可靠、高质量的代理,可与 AdsPower 无缝集成。我们携手让多账户管理更顺畅、更稳定、更易于扩展»。
专为安全且可扩展的多账户管理打造的一体化反检测浏览器
«NodeMaven 提供稳定、高质量的代理,运行流畅,支持安全高效的多账户工作流程»。
全球最受信赖的多账户管理专家
«BitBrowser 与 NodeMaven 合作,打造强大的反检测环境。多账户广告投放和社交媒体管理能够轻松降低账户被封的风险。使用 NodeMaven 安全代理可确保稳定性并保护本地数据隐私。干净、高质量且稳定。我们推荐 NodeMaven»。
用于大规模安全多账户管理的反检测浏览器和云手机平台
«NodeMaven 是我们社区中用户推荐最多的代理提供商。它提供高质量、稳定的 IP,对于需要大规模可靠性的多账户专业人士而言至关重要»。

常见问题

Scrapy 代理会将爬虫请求通过另一个 IP 地址转发。Scrapy 的 HttpProxyMiddleware 可以从 request.meta["proxy"] 或 http_proxy 与 https_proxy 环境变量中读取代理 URL。

在 NodeMaven 中生成一个 HTTP 代理,将完整的用户名和密码保存在环境变量中,然后使用下载器中间件把带认证信息的 URL 赋给 request.meta["proxy"]。Scrapy 内置的 HttpProxyMiddleware 会负责处理连接。

在 NodeMaven 代理设置中将会话类型选择为 Rotating(轮换)。Scrapy 始终使用同一个 NodeMaven 网关 URL,由 NodeMaven 负责出口 IP 的轮换。这样您就无需另行维护公共代理列表。

使用 轮换会话 适用于大范围爬取和 IP 多样性需求。对于 cookie、登录、购物车、分页流程等需要保持同一 IP 的多请求流程,请使用粘性会话。

选择 美国 在 NodeMaven 代理设置中,选择轮换住宅代理或移动代理会话,并将生成的完整用户名复制到集成配置中。逐步提升 Scrapy 并发量,遵守目标网站的规则,监控响应状态码,并在合适的情况下使用下载延迟或 AutoThrottle。

可以。一个 HTTP 代理 URL 既可用于 HTTP 目标 URL,也可用于 HTTPS 目标 URL。因此,本指南中的 NodeMaven 代理 URL 始终以 http:// 开头,即使爬虫访问的是 https:// 页面。

是否支持 SOCKS5 取决于当前启用的 Scrapy 下载处理器。Scrapy 最新文档说明,HttpxDownloadHandler 支持 SOCKS 代理,而其他内置处理器则不支持。对于本指南中的标准配置,请使用 NodeMaven HTTP 代理。SOCKS5 应视为进阶配置,部署前请先确认处理器的兼容性。

下载器中间件可以在请求到达下载器之前对其进行修改。在本集成中,NodeMavenProxyMiddleware 负责设置 request.meta["proxy"],而 Scrapy 内置的 HttpProxyMiddleware 会将该代理应用到网络请求上。

可以。直接在该请求上设置代理 URL:

yield scrapy.Request(

   url="https://example.com/",

   meta={"proxy": proxy_url},

)

单个请求上设置的值优先于代理环境变量。中间件示例中使用了 setdefault,因此已显式指定的请求代理会被保留。

HTTP 407 表示代理身份验证失败。请确认用户名完整、密码和 HTTP 端口正确、保留字符已进行 URL 编码,并且运行 Scrapy 的进程能够读取到相应的环境变量。

请将凭据保存在环境变量或密钥管理器中。不要把它们粘贴到 settings.py、middlewares.py、截图、日志或已提交到仓库的 .env 文件中。只提交变量名和示例占位符。

可以。同一套 NodeMaven 网关凭据可以集成到 Python Requests、Scrapy 和 Selenium 中。每种工具都有各自的代理配置语法,因此请复用连接信息,而不要把 Scrapy 专用的中间件代码照搬到其他库中。

NodeMaven 提供住宅代理、移动代理和 ISP 代理、地理定位、轮换会话与粘性会话、HTTP 与 SOCKS5 节点,以及 IP 质量过滤选项。开发者可以据此为每个爬虫匹配合适的代理行为,无需维护不稳定的公共代理池。

Scrapy 通过 NodeMaven 网关发送请求,由 NodeMaven 管理出口 IP。选择轮换会话可自动更换 IP,选择粘性会话则可保持同一 IP。

不需要。NodeMaven 通过单一网关实现轮换,因此无需额外的代理轮换插件。scrapy-rotating-proxies 等工具主要用于管理和测试一组独立的代理服务器。

以 $3.50 购买适用于 Scrapy 的代理服务器,并获得 750MB 流量

立即开始使用高质量代理
本网站使用 Cookie 文件 来提升您的使用体验。继续访问即表示您同意我们使用 Cookie。