尽管 Scrapy 使您可以轻松地开发可扩展的网络爬虫和爬虫,但在没有代理的情况下,它们在许多情况下是无用的。让我向您展示如何为 Scrapy 设置代理以及最好使用的代理。

作为对网络抓取感兴趣的开发人员,我需要您牢记这一点,即使网络抓取是道德和合法的,网站也不喜欢抓取他们的页面和数据——他们会在他们的内部做任何事情处置阻止你。不幸的是,只有少数有效的技术可供他们使用,IP 跟踪是最重要的技术,因为 IP 地址是互联网等计算机网络中的通用识别手段。虽然 IP 跟踪对他们来说似乎很有效,但作为网络抓取工具和自动化开发人员,我们有幸拥有可以帮助降低 IP 跟踪和阻止效率的代理。

Scrapy 是一种流行的网页抓取框架,可用于开发可扩展的抓取工具和爬虫。作为一个网页抓取工具,Scrapy 支持代理,你很可能会在你的抓取项目中使用代理。如果您不知道如何在 scrappy 中设置代理,请继续阅读本文,我将在本文中向您展示如何完成。


Scrapy概述

RequestsBeautifulSoup 之类的不同,Scrapy 是一个完整的网页抓取和抓取框架——你不能仅仅使用它来发送 HTTP 请求;您还可以使用它来解析 HTML 文档并执行其他任务。实际上,单独的 Scrapy 就像 Requests、BeautifulSoup 和其他抓取库的组合。您会喜欢这个工具的一件事是它非常广泛,并且您可以选择添加自定义功能。使用 Scrapy,您不仅可以构建网络爬虫或爬虫,还可以轻松将其部署到云端。

这个抓取框架是由Scrapinghub开发的,Scrapinghub是一家流行的数据服务提供商,对数据提取工具的开发也很感兴趣。Scrapy于 2008 年首次发布。该工具是用 Python 编写的,用于 Python 蜘蛛开发。它可以说是最快的 Python 框架——也是最流行和最强大的。与 Scrapy 相关的主要问题是它的学习曲线以及它在面对富含 JavaScript 的网站时无能为力的事实。


与 Requests 和BeautifulSoup的组合相比,Scrapy 的学习曲线更陡峭。但是,毫无疑问,它更具可扩展性,更适合复杂的开发。在设置代理时,您可能会感兴趣的是,这些过程实际上非常简单。您可以遵循两种方法在 Scrapy 中设置代理。这些将在下面讨论。

  • 方法 一:通过将其作为请求参数传递来设置代理

在 Scrapy 中设置代理的最简单方法是将代理作为参数传递。如果您想使用特定代理,此方法是完美的。Scrapy 中有一个中间件叫做 HttpProxyMiddleware,它从请求中获取代理值并正确设置。以下是如何通过 Requests 参数在 Scrapy 中设置代理的示例代码。

def start_requests(self):

    for url in self.start_urls:

        return Request(url=url, callback=self.parse,

                       headers={"User-Agent": "scrape web"},

                       meta={"proxy": "http:/154.112.82.262:8050"})
  • 方法二:创建自定义代理中间件

对于更模块化的方法,我建议您创建自定义中间件。我将向您展示如何创建自定义代理中间件并将其添加到您的中间件列表中。中间件基本上是 Scrapy 在处理请求时将运行的一段代码。下面是您可以使用的自定义中间件模板。

from w3lib.http import basic_auth_header

class CustomProxyMiddleware(object):

    def process_request(self, request, spider):

request.meta[“proxy”] = "http://192.168.1.1:8050"

request.headers[“Proxy-Authorization”] =

basic_auth_header(“<proxy_user>”, “<proxy_pass>”)

上面写完之后就可以开启了,放在HttpProxyMiddleware之前,如下图。

DOWNLOADER_MIDDLEWARES = {

    'myproject.middlewares.CustomProxyMiddleware': 350,

    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 400,

}

如何验证 Scrapy 代理

如果您按照上述任何步骤并填写了正确的代理数据,那么您的代理已经从 Scrapy 端设置好了。但是他们在工作吗?您需要对它们进行测试。为此,请向任何代理查找工具(例如Whatismyip.com)发送请求——如果它显示了您的真实 IP 地址,则说明设置或您尝试使用的代理有问题。


Scrapy 项目的住宅代理池

Scrapinghub 有自己的代理服务,称为Zyte Proxy,您可以与 Scrapy 一起使用。Crawlera 按要求定价。如果您期待使用scrapy 代理池,那么您可以从以下代理提供商之一中进行选择——他们都是住宅代理,我们已经测试了他们的代理——并且可以信任他们只销售工作代理。您将需要轮换代理以避免轮换代理和管理可能很快变坏的代理列表的障碍。


1. Bright Data

  • IP 池规模:超过 7200 万
  • 地点:世界所有国家
  • 允许并发:无限制
  • 允许的带宽:从 40GB 开始
  • 成本: 40GB 每月 500 美元起

Bright Data 可以说是市场上最好的代理提供商。他们销售住宅代理、移动代理和数据中心代理。您会喜欢该提供商的一件事是他们提供 7 天的免费试用。他们拥有最大的scrapy住宅代理池,拥有来自所有国家和每个支持国家的主要城市的超过7200万个住宅IP。

就抓取而言,它们具有最快的速度之一,并且已证明它们可以与所有流行的 Web 服务配合使用。他们的代理在每次请求或定义的时间段后轮换代理并更改 IP 地址。


2. Smartproxy

  • IP池规模:超过4000万
  • 地点:全球 195 个地点
  • 允许并发:无限制
  • 允许的带宽:从 5GB 开始
  • 成本: 5GB 每月 75 美元起

虽然 Bright Data代理安全、可靠且快速,但最低资金要求会吓到大多数小型刮板者,因为您至少需要 500 美元。对于最低货币要求较小的高级提供商,您可以选择 Smartproxy。Smartproxy 拥有一个拥有超过 4000 万个住宅 IP 的池。

它们支持高轮换代理和基于会话的代理,可帮助您将会话保持长达 10 分钟。Smartproxy 支持全球约 195 个国家和 8 个主要城市。


3. Shifter

  • IP 池规模:超过 3100 万
  • 地点: 130个国家
  • 允许并发:无限制
  • 成本: 10 个端口每月 249.99 美元起

Shifter 为全球主要城市和许多国家/地区提供支持。从支持的位置来看,它总共拥有超过 3100 万个住宅反向连接 IP,使其成为市场上最大的代理网络之一。Shifter 代理的定价基于端口而不是带宽,就像上面讨论的其他代理一样。

使用 Shifter,您将享受无限的带宽使用,这使其非常适合抓取消耗大量带宽的任务。Shifter 反向连接代理每 5 分钟更改一次 IP。您可以将他们的代理用于大量抓取任务,因为它们快速、安全且可靠。


4. IPRoyal 

  • IP池规模:超过800万
  • 地点:全球 195 个地点
  • 允许并发:无限制
  • 允许带宽:1GB起
  • 成本::1GB 7 美元起(无过期)

IPRoyal 提供来自世界各地的代理,具有适合各种任务的高性价比。 住宅代理根据带宽定价。 但是,带宽永不过期——没有月度计划、合同或其他限制。

虽然起步价已经非常有竞争力,但批量购买流量更便宜。 对于不想为不需要的东西付费的用户来说,它可能是最好的提供商。 代理通过非常易于使用的仪表板支持 HTTP 和 SOCKS5 协议。


最    后

无论是否使用 Scrapy,如果您打算抓取网站,代理都是必须的。Scrapy 支持使用代理,并且在 Scrapy 中设置代理非常容易。使用上面讨论的方法,您应该能够立即在 Scrapy 上设置代理。

如果您不想使用诸如ProxyCrawl、ScraperAPIApify Proxy 之类的 Scraping API,我还就与 Scrapy 一起使用的最佳旋转代理提出了建议。

这篇文章有用吗?

点击星号为它评分!

平均评分 / 5. 投票数:

到目前为止还没有投票!成为第一位评论此文章。

No more articles