Python 已经存在了 20 多年 现在是最流行的编程语言之一。 它是一种面向对象和解释的通用语言,这意味着在运行时检查所有错误。 Python 也是开源的,是一种高级语言,可用于广泛的任务,包括 Web 开发、人工智能、大数据、脚本等。

您不需要多年的经验即可开始使用 Python。 这很容易理解,这就是为什么如果您想学习编码,大多数软件工程师都推荐它作为起点。 在开发时考虑到用户体验,程序员经常发现 Python 代码更易于阅读,并且与其他语言相比,它允许使用更少的代码行来执行命令。

Java的

1
2
3
4
5
公开  样本 {
公开 静止 无效 (字符串参数 []) {
System.out.println(“你好,世界!”);
}
}

蟒蛇

1
打印(“你好,世界!”)

为什么使用 Python 进行网页抓取?

所以,如果你打算爬取某个网站,但不知道使用什么编程语言,那么使用 Python 是最好的开始方式。 如果您仍然不相信,这里有一些使 Python 更适合网络抓取的关键特性:

  1. 用更少的代码完成更多的任务。 我们对此怎么强调都不为过。 用 Python 编写代码要简单得多,如果您希望抓取大量数据,那么您肯定不想花更多时间编写代码。 使用 Python,您可以事半功倍。
  2. 社区支持。 由于 Python 很受欢迎并且被广泛认为是一种可靠的抓取语言,因此如果您在论坛和大多数社交媒体平台上遇到任何技术问题,您可以轻松地通过数千名社区成员寻求帮助。
  3. 众多的图书馆。 它有大量的库可供选择,尤其是用于网络抓取的库,包括 Selenium、BeautifulSoup,当然还有 ProxyCrawl。

但是,网络抓取有时会很棘手,因为某些网站可能会阻止您的请求甚至禁止您的 IP。 如果不使用代理,在 Python 中编写一个简单的爬虫可能是不够的。 因此,要正确抓取网络上的敏感数据,您将需要 ProxyCrawl 抓取 API 这将允许您通过避免被阻止的请求和验证码轻松抓取大多数网站。

使用 ProxyCrawl 使用 Python 抓取网站

既然我们已经为您提供了一些应该使用 Python 和 ProxyCrawl 进行网页抓取的原因,让我们继续指导您如何真正开始构建自己的抓取工具。

首先,这里是我们简单的抓取工具的先决条件:

  1. 代理爬取帐户
  2. PyCharm 或您喜欢的任何代码编辑器
  3. 的Python 3.x
  4. ProxyCrawl Python 库

请务必记下您的 ProxyCrawl 令牌,该令牌将用作您使用 Crawling API 服务的身份验证密钥。

让我们从安装我们将用于这个项目的库开始。 您可以在控制台上运行以下命令:

1
点安装代理爬行

一旦一切都设置好了,现在是时候编写一些代码了。 首先,导入 ProxyCrawl API:

1
 代理爬取 进口 抓取API

然后初始化 API 并输入您的身份验证令牌:

1
api = CrawlingAPI({'令牌': 'USER_TOKEN'})

之后,获取您的目标 URL 或您想要抓取的任何网站。 对于本指南,我们将以亚马逊为例。

1
目标网址 = 'https://www.amazon.com/AMD-Ryzen-3800XT-16-Threads-Processor/dp/B089WCXZJC'

我们代码的下一部分将允许我们下载 URL 的完整 HTML 源代码,如果成功,将在您的控制台或终端上显示结果:

1
2
3
响应 = api.get(targetURL)
if 回复['状态代码'] == 200:
打印(回复['身体'])

如您所见,对 ProxyCrawl 的每个请求都带有响应。 如果状态为 200 或成功,我们的代码只会向您显示抓取的 HTML。 任何其他响应,比如 503 或 404,将意味着网络爬虫失败。 但是,该 API 在全球范围内使用了数千个代理,它们应该可以提供最好的数据结果。

现在,我们已经成功构建了一个爬虫。 但是我们想要的是一个刮刀工具,对吧? 因此,我们将使用最方便的方法来抓取一个网站,该网站将以 JSON 格式返回解析数据。

Crawling API 的一大特点是我们可以使用内置的 数据刮板 对于支持的网站,幸运的是,亚马逊就是其中之一。

要使用数据抓取器,只需将其作为参数传递给我们的 GET 请求。 我们的完整代码现在应该如下所示:

1
2
3
4
5
6
7
8
9
 代理爬取 进口 抓取API

api = CrawlingAPI({'令牌': 'USER_TOKEN'})

目标网址 = 'https://www.amazon.com/AMD-Ryzen-3800XT-16-Threads-Processor/dp/B089WCXZJC'

响应 = api.get(targetURL, {'自动解析': '真的'})
if 回复['状态代码'] == 200:
打印(回复['身体'])

如果一切顺利,您将收到类似以下示例的响应:

响应输出

使用 BeautifulSoup 和 ProxyCrawl 进行抓取

现在,如果您想获得更具体的数据,比如产品名称和价格,该怎么办? 如前所述,Python 拥有大量库,包括专门用于抓取的库。 BeautifulSoup 就是其中之一,它是 Python 上一个流行的包,用于解析 HTML 和 XML 数据。 初学者可以利用它也更容易使用。

所以,让我们继续尝试使用 Crawling API 和 BeautifulSoup 构建一个简单的爬虫。 由于我们使用的是 Python 3.xx 版本,让我们安装最新的 BeautifulSoup 包 简称为 BS4:

1
点安装beautifulsoup4

由于我们之前已经安装了 ProxyCrawl 库,您可以创建一个新的 Python 文件并导入 BS4 或 ProxyCrawl。

1
2
 bs4 进口 美丽汤
代理爬取 进口 抓取API

然后,和之前一样,确保初始化 API 并使用 GET 请求来抓取您的目标 URL:

1
2
3
4
5
api = CrawlingAPI({ '令牌': 'USER_TOKEN' })

目标网址 = 'https://www.amazon.com/AMD-Ryzen-3800XT-16-Threads-Processor/dp/B089WCXZJC'

响应 = api.get(targetURL)

接下来,我们需要将 HTML 源代码传递给 BeautifulSoup,以便我们可以获取一个对象并使用 lxml 解析器解析出特定数据。

1
2
if 回复['状态代码'] == 200:
b_soup = BeautifulSoup(响应['身体'], 'lxml')

在此示例中,我们将尝试从亚马逊产品页面获取产品名称和价格。 最简单的方法是使用 find 方法并传入一个参数来抓取我们需要的特定文本。 要了解更多如何选择特定 HTML 元素,您可以查看 BeautifulSoup 文档.

1
2
product_name = b_soup.find('跨度', 类_='a-size-large product-title-word-break')。文本
product_price = b_soup.find('跨度', 类_='a-size-medium a-color-price priceBlockBuyingPriceString')。文本

之后,我们只需要编写一个命令来打印输出。

1
2
打印('姓名:', 产品名称)
打印('价格:', 产品价格)

完整的代码现在应该如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 bs4 进口 美丽汤
代理爬取 进口 抓取API

api = CrawlingAPI({ '令牌': 'USER_TOKEN' })

目标网址 = 'https://www.amazon.com/AMD-Ryzen-3800XT-16-Threads-Processor/dp/B089WCXZJC'

响应 = api.get(targetURL)

if 回复['状态代码'] == 200:
b_soup = BeautifulSoup(响应['身体'], 'lxml')

product_name = b_soup.find('跨度', 类_='a-size-large product-title-word-break')。文本
product_price = b_soup.find('跨度', 类_='a-size-medium a-color-price priceBlockBuyingPriceString')。文本
打印('姓名:', 产品名称)
打印('价格:', 产品价格)

示例输出:

样本输出

总结

就如此容易。 只需 12 行代码,我们的抓取工具就完成了,现在可以使用了。 当然,您可以根据需要利用在这里学到的知识,它将提供已经解析的各种数据。 在 Crawling API 的帮助下,您无需担心网站屏蔽或验证码,因此您可以专注于对您的项目或业务重要的事情。

请记住,这只是一个非常基本的抓取工具。 Python 可以以各种方式和更大规模的方式使用。 继续尝试不同的应用程序和模块。 也许您可能想要搜索和下载 Google 图片、监控购物网站上的产品定价以了解每天的变化,或者甚至为需要数据提取的客户提供服务。

可能性是无穷无尽的,并且使用 ProxyCrawl 的 抓取和抓取 API 将确保您的刮刀始终保持有效和可靠。