如何使用 Botasaurus 进行网络抓取

如何使用 Botasaurus 进行网络抓取?

在本文中,我将向你介绍如何设置 Botasaurus、使用其功能以及避免可能遇到的常见问题。无论你是网络刮擦的新手,还是在寻找绕过反僵尸措施的更有效方法,本指南都将指导你完成你需要知道的一切。让我们开始吧

什么是Botasaurus?

Botasaurus 是一个面向网页抓取的 Python 库,重点在于绕过反爬虫系统。不同于传统抓取方法,Botasaurus 使用真实浏览器自动化,因此在抓取依赖 JavaScript 的动态网站时很有效。它的一个关键特性是能够规避反爬虫系统的检测,例如 Cloudflare,而网站通常会用它来阻止不受欢迎的抓取行为。

Botasaurus 可与 Selenium 和 Requests 等工具集成,提供全面的刮擦解决方案。它提供简单的配置选项,允许你使用代理服务器进行身份验证、使用 Chrome 浏览器扩展、通过谷歌路由请求以模仿合法用户行为。这使它成为了一个很好的工具,可用于搜索那些试图阻止搜索者的网站。

为什么要使用 Botasaurus?

如果你一直在尝试抓取那些在几次请求后就封禁你的爬虫的网站,Botasaurus 可以带来几个优势:

  1. 防探测功能:Botasaurus 与 Selenium WebDriver 并使用先进的技术来隐藏您的刮擦活动,使网站难以检测到您的自动机器人。
  2. 真正的浏览器自动化:由于 Botasaurus 可在真实浏览器上运行,因此对于主要依靠 JavaScript 渲染内容的动态网站来说,它尤其有效。
  3. 自动设置 ChromeDriver:与某些需要手动安装和管理 ChromeDriver 的刮擦工具不同,Botasaurus 会在首次构建过程中自动处理,从而使设置过程更轻松。
  4. 代理支持:Botasaurus 允许您通过代理路由请求,帮助您避免 IP 禁止和速率限制。查看我的 最佳轮换 IP 提供商.
  5. 谷歌路由:Botasaurus 可以通过谷歌发送请求,进一步模仿合法的浏览活动,使反僵尸系统更难检测到你的请求。

您在寻找更具可扩展性的替代方案吗?

虽然 Botasaurus 非常适合本地刮擦和绕过基本的反僵尸措施,但它在高级指纹识别、远程部署和保持大规模可靠性方面可能会遇到困难。如果您遇到这些限制,可以考虑使用 Bright Data 的网络解锁程序.

Web Unlocker 是一个完全可管理的解决方案,可自动处理 IP 轮换、浏览器指纹、验证码求解和动态内容渲染。无需管理无头浏览器或从头开始构建规避逻辑,它是扫描受保护网站的理想选择。

无论您是要进行大规模刮擦,还是只想获得比本地浏览器自动化更稳定的替代方案,Web Unlocker 都能为您节省时间并降低失败率。

现在,让我们开始设置和使用 Botasaurus 进行网络搜索。

先决条件

在深入学习代码之前,您需要准备以下材料:

  1. Python 3.12.1 或更高版本:Botasaurus 需要 Python 才能运行,因此请确保您的计算机上安装了最新版本。您可以从 Python 官方网站.
  2. 植物龙图书馆:您需要 安装Botasaurus这可以通过 pip(Python 的软件包安装程序)轻松完成。

安装 Botasaurus

要安装 Botasaurus,请打开终端或命令提示符并运行以下命令:

pip install botasaurus

安装完成后,就可以开始刮削了。

使用 Botasaurus 设置您的第一个抓取工具

让我们创建一个简单的刮擦工具,从网站中提取数据。在本教程中,我们将对 NFT 市场 OpenSea 进行刮擦,并提取主页的 HTML。下面是开始的方法:

步骤 1:创建新项目

首先,为项目创建一个新文件夹。在这个文件夹中,创建一个名为 scraper.py 的文件。这将是你编写刮擦代码的文件。

步骤 2:导入 Botasaurus

在 scraper.py 文件的开头,导入 Botasaurus 模块:

from 植物龙 import *

步骤 3:编写刮板函数

定义一个函数来执行刮擦。Botasaurus 使用 @browser 等装饰器来定义刮擦函数。驱动程序参数是与浏览器交互的自动化驱动程序,而数据参数则包含要传递给函数的任何数据。

下面是一个基本的刮擦功能,可以导航到 OpenSea 的主页:

@ 浏览器
def 刮刀(driver: AntiDetectDriver, data: dict):
# 导航至目标网站
driver.google_get("https://opensea.io")
# 读取 HTML 内容
content = driver.text("html")
# 将 HTML 内容打印到控制台
print(内容)
# 以字典形式返回内容
return {"content"内容}

在上述函数中

  • driver.google_get("https://opensea.io")告诉 Botasaurus 驱动程序打开 OpenSea 主页。
  • driver.text("html") 获取页面的 HTML 内容。
  • 内容将打印到控制台,并作为字典返回,以供进一步使用。

步骤 4:运行抓取工具

要执行刮板,请在文件末尾调用 scraper() 函数:

刮刀()

首次运行脚本时,Botasaurus 会自动安装 ChromeDriver 并设置必要的依赖项。这可能需要几分钟时间,请耐心等待。

设置完成后,刮擦器会访问 OpenSea,并将主页的 HTML 内容打印到控制台。

添加代理以避免 IP 禁止

网站通常会屏蔽那些从同一 IP 地址发送过多请求的爬虫。为避免这种情况,你可以使用代理,让请求经由不同的 IP 地址转发。Botasaurus 让为你的爬虫配置代理变得很简单。

下面介绍如何为刮板添加代理:

第 1 步:指定代理

您可以在 @browser 装饰器中加入代理参数,从而为您的 scraper 添加代理。例如

@browser(proxy="http://185.217.136.67:1337")
def 刮刀(driver: AntiDetectDriver, data: dict):
# Your scraping code here

这表示所有请求都将通过位于 185.217.136.67:1337 的代理服务器处理。您可以选择一个代理服务器来代替它。

步骤 2:测试代理

要确认代理是否正常工作,可以使用 httpbin 等服务来检查您当前的 IP 地址。更新您的刮擦器以访问 httpbin 并打印响应:

@browser(proxy="http://185.217.136.67:1337")
def 刮刀(driver: AntiDetectDriver, data: dict):
driver.get("https://httpbin.org/ip")
ip_address = driver.text("正文")
print(ip_address)

这将打印出爬虫正在使用的 IP 地址。如果一切配置正确,你应该会看到一个与原始 IP 不同的地址,这就说明代理已经生效。

Botasaurus 的高级功能

Botasaurus 具有多种高级功能,可帮助您更有效地进行刮擦并躲避检测。以下是一些最有用的功能:

1.动态用户代理切换

让你的爬虫更难被识别的一种方法是轮换 User-Agent 请求头。Botasaurus 可以在不同的 User-Agent 字符串之间自动切换,让你的请求看起来像是来自不同的浏览器和设备。这有助于你避开那些会检查请求头中可疑模式的反爬系统。

2.绕过 Cloudflare 保护

Cloudflare 是一种流行的反僵尸服务,许多网站都在使用。Botasaurus 包含绕过 Cloudflare 保护的特殊功能。您可以使用driver.google_get()方法通过谷歌发送请求,这样Cloudflare就很难检测到自动活动。

3.平行扫描

对于较大的刮擦任务,您可以同时刮擦多个页面。只需进行最少的配置,Botasaurus 就能支持并行搜索。这可以大大加快数据提取过程。

4.使用 Chrome 浏览器扩展

Botasaurus 允许您在浏览器实例中安装任何 Chrome 扩展。如果您在刮擦过程中需要特定功能,例如阻止弹出窗口或运行自定义脚本,可以在 @browser 装饰器中添加扩展 URL。

@browser(extension="https://chrome.google.com/webstore/detail/extension-id")
def 刮刀(driver: AntiDetectDriver, data: dict):
# Your scraping code here

5.调试支持

如果您在刮擦时遇到问题,Botasaurus 会提供调试支持。您可以暂停浏览器实例,检查出了什么问题。这在处理使用 JavaScript 的动态网站时尤其有用。

植物大战僵尸的局限性

虽然 Botasaurus 是一款功能强大的工具,但它也有一些局限性:

  1. 有限的高级指纹管理:Botasaurus 并不完全针对高级指纹识别技术。即使它动态更改了用户代理并隐藏了 IP 地址,一些网站仍可能根据浏览器环境的细微差别检测到你的机器人。
  2. 不适合远程服务器:Botasaurus 在本地开发环境中运行效果最佳。在远程服务器(如 AWS)上,由于浏览器 API 的访问受到限制,其性能可能不尽如人意。
  3. 依赖外部网站进行规避:有时,Botasaurus 需要通过谷歌等外部网站发送请求。如果外部网站改变了安全措施,这就不可靠了。

结论

因此,我们已经探讨了如何使用 Botasaurus 进行网页抓取。这个库提供了一种简单而有效的方法,可以绕过反爬措施,并从使用动态 JavaScript 和高级防护的网站中抓取数据。

我们还讨论了如何设置 Botasaurus、使用代理支持以及利用其高级功能(如隐身模式和并行扫描)。

不过,Botasaurus 也有其局限性,例如高级浏览器指纹识别和依赖外部网站进行规避。使用 Botasaurus 并遵循最佳实践,您可以构建功能强大的网络刮擦程序,绕过反僵尸保护并提取所需的数据。

类似文章