黑五提前开启 使用优惠码,即享 2 倍流量和 2 倍数量的 ISP 代理 BF26
开始试用

Scrapy 代理

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

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

首个代理
返现
市场上

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

高级设置
无需额外付费

每个套餐都包含大多数服务商需额外付费才提供的工具

  • 质量 & 速度过滤器
  • 内置代理检测工具
  • ZIP 级别定位

抓取网页数据,
追踪 AI 表现

控制面板中的更多工具:

  • Scraping Browser. 通过提示词或代码实现网站自动化 了解更多 →
  • LLM Visibility API. 比较不同模型和国家/地区的 AI 回答

什么是 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 流量

选择 适用于 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 流量

以 $3.50 购买适用于 Scrapy 的代理服务器,并获得 750MB 流量
本网站使用 Cookie 文件 来提升您的使用体验。继续访问即表示您同意我们使用 Cookie。