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

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

爪哇岛

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

蟒蛇

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

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

因此,如果您计划爬行和抓取某个网站,但不知道使用什么编程语言,那么使用 Python 抓取是最好的开始方式。如果您仍然不相信,这里有一些使 Python 更适合的关键功能 网络抓取:

  1. 用更少的代码完成更多的任务: 我们对此怎么强调都不为过。 用 Python 编写代码要简单得多,如果您希望抓取大量数据,那么您肯定不想花更多时间编写代码。 使用 Python,您可以事半功倍。
  2. 社区支持: 由于 Python 很流行并且被广泛认为是一种可靠的抓取语言,因此如果您遇到任何技术问题,您可以通过论坛和大多数社交媒体平台上的数千名社区成员轻松寻求帮助。
  3. 众多的图书馆: 它有大量可供选择的库,特别是用于网页抓取的库,包括 Selenium、BeautifulSoup,当然还有 Crawlbase。
  4. 动态打字: Python 允许您使用变量而无需指定其数据类型,从而节省时间并提高任务效率。
  5. 清晰易懂的语法: Python 的语法由于与英语语句相似而易于理解。代码具有表达力和可读性,缩进有助于有效区分不同的代码块或范围。

然而,网络抓取有时可能会很棘手,因为某些网站可能会阻止您的请求,甚至禁止您的 IP。如果不使用代理,用 Python 编写一个简单的网络抓取工具可能还不够。因此,要使用 Python 轻松抓取网站,您将需要 Crawlbase 抓取 API 这可以让您避免阻止请求和验证码。

使用 Crawlbase 使用 Python 抓取网站

现在我们已经向您提供了应该使用 Crawlbase 在 Python 中构建网络抓取工具的一些原因,让我们继续指导如何使用 Python 抓取网站并构建抓取工具。

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

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

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

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

1
点安装爬虫库

一旦一切设置完毕,现在就可以编写一些代码了。首先,导入Crawlbase API:

1
 爬行基地 进口 抓取API

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

1
api = 爬行API({'令牌': '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:
打印(回复['身体'])

如您所见,对 Crawlbase 的每个请求都会附带响应。仅当状态为 200 或成功时,我们的代码才会向您显示已爬网的 HTML。任何其他响应,例如 503 或 404,都意味着网络爬虫失败。然而,该 API 正在全球使用数千个代理,这应该可以提供最佳的数据结果。

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

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

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

1
2
3
4
5
6
7
8
9
 爬行基地 进口 抓取API

api = 爬行API({'令牌': 'USER_TOKEN'})

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

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

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

响应输出

使用 BeautifulSoup 和 Crawlbase 进行抓取

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

那么,这次让我们继续尝试使用 Crawling API 和 BeautifulSoup 在 Python 中构建一个简单的网络抓取工具。由于我们使用的是 Python 3.xx 版本,让我们安装最新的 BeautifulSoup 包 简称为 BS4:

1
点安装beautifulsoup4

由于我们之前已经安装了 Crawlbase 库,因此您只需创建一个新的 Python 文件并导入 BS4 或 Crawlbase 即可。

1
2
 bs4 进口 美丽汤
爬行基地 进口 抓取API

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

1
2
3
4
5
6
7
8
9
10
api = 爬行API({ '令牌': 'USER_TOKEN' })

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

响应 = api.get(targetURL)

接下来,我们需要 通过 HTML 源代码到 BeautifulSoup 这样我们就可以得到 对象 解析出具体数据 lxml 解析器。

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

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

1
2
产品*名称 = b_soup.find('跨度', *='a-size-large product-title-word-break')。文本
产品*价格 = 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 = 爬行API({ '令牌': 'USER_TOKEN' })

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

响应 = api.get(targetURL)

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

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

示例输出:

样本输出.jpg

样本输出

用于网页抓取的库

对于使用 Python 进行抓取,有用于各种任务的特定库:

  • 硒: 它充当网络测试工具,有效地自动化浏览器任务。
  • 美丽汤: 该 Python 包解析 HTML 和 XML 文档,生成解析树以简化数据提取。
  • 熊猫: 它用于数据操作和分析。 Pandas 有助于以首选格式提取和存储数据。

在考虑使用 Python 进行网络抓取的合法性时,需要注意的是,不同网站的抓取权限有所不同。要确定网站对网络抓取的立场,您可以参考其“robots.txt”文件。通过将“/robots.txt”添加到要抓取的 URL 来访问此文件。

虽然抓取行为本身可能是合法的,但提取的数据可能对其使用有法律限制。确保您没有踩到:

  • 受版权保护的材料: 是指受知识产权法保护的数据。未经授权使用此类内容是非法的。
  • 个人信息: 可以识别个人身份的数据属于欧盟公民的 GDPR 等隐私法规的管辖范围。如果没有合法理由存储这些数据,最好避免收集它。

一般来说,在抓取之前请务必查看网站的条款和条件,以确保遵守其政策。如果不确定,请考虑在继续之前联系网站所有者以寻求明确同意。了解这些法律方面有助于在法律范围内负责任地使用 Python 进行网络抓取。

网页抓取挑战

对于使用 Python 进行网页抓取,请做好应对过程中的一些挑战的准备。互联网充满了不同的技术、风格和不断的演变,使得抓取起来有点混乱。

  • 网站多样性: 每个网站都是独特的,需要定制方法来有效提取数据,尽管存在重复的模式。
  • 动态性质: 网站不断变化。您的 Python 网络抓取工具一开始可能会完美运行,但随着网站的发展,它可能会遇到错误或难以导航新结构。
  • 适应性: 尽管发生了变化,但大多数网站的更改都是渐进的。通过微小的调整来更新您的抓取工具通常足以适应这些变化。
  • 持续维护: 由于互联网结构不断发展,您的抓取工具需要定期更新和调整才能保持功能和准确性。

网页抓取奖励提示

当您使用 Python 网络抓取工具抓取数据时,请考虑以下有用的提示和技巧:

  • 为您的请求计时: 短时间内发送过多请求可能会触发验证码,甚至导致您的 IP 被封锁。为了避免这种情况,请在请求之间引入超时,从而创建更自然的流量。虽然此问题没有 Python 解决方法,但间隔请求可以消除潜在的块或验证码。
  • 错误处理: 当您使用 Python 抓取网站时,您应该知道网站是动态的,其结构可能会发生意外变化。实施错误处理,例如使用 try- except 语法,特别是如果您经常使用相同的网络抓取工具。事实证明,这种方法在等待元素、提取数据或发出请求时非常有用,有助于有效管理网站结构的变化。

关于 Python 你不知道的五个有趣事实

让我们花点时间了解一些有关 Python 的有趣事实,这些事实可能会让您感到有趣:

  1. “Python”的由来: 有没有想过为什么它被称为“Python”?这个名字的灵感来自英国喜剧系列《巨蟒剧团的飞行马戏团》。创建者 Guido Van Rossum 在 Python 的开发过程中发现该节目很有趣,并选择了一个简短、朗朗上口的名称。与普遍的看法相反,它与蛇的种类无关!
  2. Python 的开源性质: Python是一种开源语言,体现了此类编程语言的所有特征。它的开源性质允许充满活力的 Python 社区做出贡献。
  3. Python 在 Google 的角色: 令人惊讶的是,Python 在 Google 中占有重要地位,并为包括 YouTube 在内的各种 Google 产品提供支持。
  4. Python的多功能性: Python 的范围不受限制;它的用途非常广泛。您可以创建移动应用程序、物联网应用程序、从事网络开发,并将其用于机器学习和人工智能项目。
  5. 易于拆包功能: Python 的迷人特性之一是它能够轻松解压函数,这一特性可能会让您大吃一惊。

结论

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

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

可能性是无限的,使用 Crawlbase 的爬行和抓取 API 将确保您的 Python 网络抓取工具始终保持有效和可靠。