网页抓取和数据提取彻底改变了我们从互联网上的海量数据中收集信息的方式。像 Google 这样的搜索引擎是知识的金矿,从搜索结果中提取有用的 URL 的能力可以对许多目的产生重大影响。无论您是从事市场研究的企业老板、喜欢数据并想要信息,还是需要数​​据用于工作中的不同用途,网页抓取都可以为您提供所需的数据。

在本博客中,我们将学习如何抓取 Google 搜索结果,提取有用信息,以及如何以 SQLite 数据库。

我们会用的 Python Crawlbase 爬取 API。我们将一起探索复杂的网络抓取和数据管理世界,为您提供使用 Google 搜索结果的技能和诀窍。让我们开始吧!

  1. 揭示网页抓取的力量
  • 网页抓取的主要优点
  1. 了解 Google 搜索页面抓取的重要性
  • 为什么要抓取 Google 搜索页面?
  1. 使用 Crawlbase 抓取 API 开启您的网页抓取之旅
  • Crawlbase 抓取 API 简介
  • Crawlbase爬取API的显着优势
  • 探索 Crawlbase Python 库
  1. 成功开始的基本要求
  • 配置您的开发环境
  • 安装必要的库
  • 创建您的 Crawlbase 帐户
  1. 解析 Google 搜索页面
  • 解构 Google 搜索页面
  1. 使用 Crawling API 掌握 Google 搜索页面抓取
  • 获取您的 Crawlbase 令牌
  • 设置 Crawlbase 抓取 API
  • 选择理想的刮刀
  • 轻松管理分页
  • 将数据保存到 SQLite 数据库
  1. 总结
  2. 常见问题解答

1. 网络抓取的力量

网页抓取是一项改变游戏规则的技术,可以从网站中提取数据。您可以将其视为一个数字助手,访问网站、收集信息并整理信息以供您使用。网页抓取使用计算机程序或脚本自动从网站收集数据。无需手动从网页复制和粘贴信息,网页抓取工具就可以完成这项工作,而且规模很大。这些工具可以浏览网站、提取特定数据,并以有组织的格式保存数据以供分析或存储。

网页抓取的主要优势

网页抓取 Google 搜索结果的好处
  1. 生产力:网页抓取可以自动收集数据,从而节省您的时间和精力。它可以处理大量数据并正确处理。
  2. 获取正确数据:抓取数据直接从数据来源处提取,从而减少人们手动输入数据时可能发生的错误。
  3. 最新信息:网页抓取让您关注网站并收集最新信息。这对于检查价格、查看库存或关注新闻等工作至关重要。
  4. 选择您想要的数据:您可以设置网络抓取来获取您需要的信息,例如物价、新闻头条或研究事实。
  5. 结构化数据:抓取的数据以结构化格式组织,这使得分析、搜索和在数据库或报告中使用变得简单。
  6. 竞争情报:网络抓取可帮助企业关注竞争对手、跟踪市场趋势并发现新机会。
  7. 研究与分析:研究人员应用网络抓取技术收集学术或市场研究数据,而分析师则收集见解以做出商业决策。
  8. 自动化:您可以设置网页抓取功能按计划运行,以确保您的数据保持最新。

2. 了解 Google 搜索结果抓取的重要性

谷歌作为全球最受欢迎的搜索引擎,对这一场景有着至关重要的影响。抓取谷歌搜索页面可以获取大量数据,这在不同领域有很多好处。在探讨如何抓取谷歌搜索页面的细节之前,我们需要掌握网页抓取的优势,并认识到为什么这种方法对于从网页获取数据如此重要。

为什么要抓取 Google 搜索结果?

抓取 Google 搜索页面有很多好处。得益于 Google 作为全球使用率最高的搜索引擎,您可以访问大量且多样化的数据。这些数据涵盖了从商业到学校再到研究等许多领域。

为什么要抓取谷歌搜索页面

抓取的真正优势在于您可以获得所需的数据。Google 的搜索结果与您正在寻找的内容相匹配。当您抓取这些结果时,您可以获得符合搜索条件的数据,从而提取所需的信息。Google 搜索会显示与您搜索的主题相关的网站列表。抓取这些链接可让您构建一整套符合您正在研究或学习的内容的资源。

公司可以使用 Google 搜索结果抓取来研究市场。他们可以从有关其领域或产品的搜索结果中了解竞争对手。查看这些结果有助于他们了解市场趋势、买家的想法以及其他公司在做什么。制作内容和撰写博客的人可以使用这种方法来查找好的文章、博客文章和新闻。这为他们创建自己的内容提供了坚实的基础。在线营销人员和 SEO 专家从抓取搜索页面中获益良多。

学习抓取 Google 搜索页面将为您提供一个强大的工具来利用互联网的丰富信息。在本博客中,我们将介绍此过程的技术方面。我们将使用 Python 和 Crawlbase Crawling API 作为工具。让我们开始这段旅程,了解 Google 搜索页面的网络抓取的艺术和科学。

3. 使用 Crawlbase Crawling API 开启您的网页抓取之旅

让我们开始你的网页抓取冒险吧 Crawlbase 爬取 API。无论您是刚接触网页抓取,还是已经从事多年,此 API 都将指导您从网站提取数据。我们将向您展示此工具的特别之处,并向您介绍 Crawlbase Python 库.

了解 Crawlbase 爬取 API

Crawlbase Crawling API 在网页抓取方面处于领先地位,为用户提供了一种强大而灵活的从网站提取数据的方法。它旨在通过提供带有强大工具的简单界面,使棘手的网页抓取工作变得更容易。借助 Crawlbase 的帮助,您可以设置从网站甚至从 Google 搜索页面等棘手的网站自动抓取数据。这种自动化功能可为您节省大量手动收集数据所需的时间和工作。

此 API 可让您通过 Restful API 接入 Crawlbase 的大型抓取设置。您只需与此 API 对话,告诉它要抓取哪些 URL 以及抓取 API 所需的任何额外详细信息。您将以 HTML 或 JSON 格式的整洁包形式获得抓取的数据。这种顺畅的来回传递让您可以专注于获取有用的数据,而 Crawlbase 会处理网页抓取中的棘手问题。

Crawlbase 爬取 API 的好处

在有如此多的选择的情况下,为什么我们选择 Crawlbase Crawling API 来进行我们的网页抓取项目?让我们仔细看看这个选择背后的想法:

  1. 可扩展性:Crawlbase 能够处理大规模的网页抓取。您的项目可能涵盖几百页或包含数百万条目的庞大数据库。Crawlbase 会根据您的需求进行调整,确保您的抓取项目顺利发展。
  2. 可靠性:由于网站不断变化,网页抓取可能很困难。Crawlbase 通过可靠的错误处理和监控解决了这个问题。这减少了抓取作业和遇到意外问题的可能性。
  3. 代理管理:网站经常使用 IP 封锁等反抓取措施。为了解决这个问题,Crawlbase 提供了良好的代理管理。此功能可帮助您避免 IP 禁令,并确保您仍能获取所需的数据。
  4. 操作简单:Crawlbase API 免去了构建和运行抓取工具或爬虫的麻烦。它在云端工作,处理复杂的技术问题,因此您可以专注于获取所需的数据。
  5. 新鲜数据:Crawlbase 爬取 API 可确保您通过实时爬取获取最新、最及时的数据。这对于需要准确分析和决策的任务至关重要。
  6. 省钱:设置和运行您的网络抓取系统可能很昂贵。另一方面,Crawlbase Crawling API 提供了一种更便宜的选项,您可以按使用量付费。

探索 Crawlbase Python 库

Crawlbase Python 库可帮助您充分利用 Crawlbase 爬取 API。此库可作为您将 Crawlbase 添加到 Python 项目的工具包。无论开发人员的经验水平如何,它都能让这一过程变得简单。

这是它的工作原理的一瞥:

  1. 初始化: 通过使用您的 Crawlbase 令牌初始化 Crawling API 类来开始您的旅程。
1
api = 爬行API({ '令牌': 'YOUR_CRAWLBASE_TOKEN' })
  1. 抓取网址: 使用 get 函数轻松抓取 URL,指定 URL 和任何可选参数。
1
2
3
响应 = api.get('https://www.example.com')
if 回复['状态代码'] == 200:
打印(回复['身体'])
  1. 定制: Crawlbase Python 库提供了调整抓取的选项。您可以在 API 文档中查看更多探索方法。

现在您已经了解了 Crawlbase 抓取 API,并且可以很好地使用它。我们即将深入研究 Google 的庞大搜索结果,揭开获取网络数据的秘密。让我们开始探索 Google 提供的所有信息吧!

4. 成功起步的基本要求

在使用 Crawlbase Crawling API 开始网页抓取之旅之前,您需要准备好一些必需品。本部分将讨论这些必备品,确保您已为接下来的工作做好一切准备。

配置您的开发环境

设置编码空间是您在网页抓取过程中要做的第一件事。您需要执行以下操作:

  1. Python 安装:确保您的计算机上安装了 Python。您可以从其官方网站获取最新的 Python 版本。您还可以在那里找到易于遵循的安装指南。
  2. 代码编辑器:选择一个代码编辑器或 IDE 来编写 Python 代码。一些流行的选择是 Visual Studio代码, PyCharm, Jupyter笔记本,或者像 崇高的文字.
  3. 虚拟环境:为项目设置虚拟环境是一个明智之举。它将项目所需的软件包与计算机主 Python 设置中安装的软件包分开。这有助于避免不同版本的软件包之间发生冲突。您可以使用 Python 的内置 VENV 模块或其他工具 的virtualenv 创建这些隔离的环境。

安装必要的库

要与 Crawlbase Crawling API 交互并有效执行网页抓取任务,您需要安装一些 Python 库。 以下是您需要的关键库的列表:

  1. 爬行基地: 一个轻量级、无依赖的 Python 类,充当 Crawlbase API 的包装器。 我们可以使用它向 Crawling API 发送请求并接收响应。 您可以使用安装它 pip:
1
点安装爬虫库
  1. SQLite: SQLite 是一个轻量级、无服务器且独立的数据库引擎,我们将用它来存储抓取的数据。 Python 内置了对 SQLite 的支持,因此无需单独安装。

创建您的 Crawlbase 帐户

现在,让我们为您设置一个 Crawlbase 帐户。 按着这些次序:

  1. 访问 Crawlbase 网站: 打开网络浏览器并导航至 Crawlbase 网站注册页面以开始注册过程。
  2. 提供您的详细信息: 系统会要求您提供电子邮件地址并为您的 Crawlbase 帐户创建密码。 填写所需信息。
  3. 验证: 提交详细信息后,您可能需要验证您的电子邮件地址。 检查您的收件箱中是否有来自 Crawlbase 的验证电子邮件,然后按照提供的说明进行操作。
  4. 登录: 验证您的帐户后,返回 Crawlbase 网站并使用您新创建的凭据登录。
  5. 访问您的 API 令牌: 您需要 API 令牌才能使用 Crawlbase 爬网 API。 您可以在这里找到您的代币。

配置好开发环境、安装必要的库并创建 Crawlbase 帐户后,您现在就具备了使用 Crawlbase Crawling API 深入 Web 抓取世界的必要条件。 在以下部分中,我们将深入了解 Google 的搜索页面结构和网络抓取的复杂性。 那么,让我们继续我们的旅程吧!

5.了解Google搜索结果页面的结构

要想熟练地抓取 Google 搜索页面,您需要了解这些页面是如何组合在一起的。Google 使用混合了不同部分的复杂布局来显示搜索结果。在本部分中,我们将分解主要部分并向您展示如何发现其中有价值的数据。

Google 搜索结果页面的组成部分

典型的 Google 搜索页面由几个不同的部分组成,每个部分都有特定的用途:

谷歌搜索页面
  1. 搜索栏:您会在页面顶部找到搜索栏。您可以在此处输入要查找的内容。然后 Google 会查看其数据库以向您显示匹配的结果。
  2. 搜索工具:在搜索结果上方,您会看到一系列选项,可以缩小要查看的内容范围。您可以更改结果的排序方式、选择特定的日期范围或选择所需的内容类型。这可以帮助您找到所需的内容。
  3. 广告:留意搜索结果开头和结尾的赞助内容。这些是公司付费的广告。它们可能与您搜索的内容相关,但有时并不相关。
  4. 位置:Google 通常会在搜索结果页面顶部显示一张与您要查找的内容相关的地图。它还会列出地址以及如何联系最相关的地点。
  5. 搜索结果:页面的主要部分列出了符合您搜索条件的网站、文章、图片或其他内容。每项内容通常都带有标题、简短预览和网址。
  6. 人们还问:在搜索结果旁边,您通常会看到一个“人们还问”框。它的作用类似于常见问题解答部分,显示与您搜索的内容相关的问题。
  7. 相关搜索:Google 会根据您的查询显示相关搜索链接列表。这些链接可以带您找到有用的资源,以丰富您的数据收集。
  8. 知识图谱:在页面右侧,您可能会看到一个知识图谱面板,其中包含有关您查找的主题的信息。此面板通常包含关键事实、图片和相关主题。
  9. 分页:如果搜索结果有多个页面,您会在底部看到分页链接。这些链接可让您在搜索结果中移动。

在接下来的部分中,我们将探索抓取 Google 搜索页面的具体细节。我们将介绍如何提取关键数据、处理分页以及如何将信息保存到 SQLite 数据库。

6. 使用 Crawling API 掌握 Google 搜索页面抓取

本部分将重点介绍如何使用 Crawlbase 爬取 API。我们希望充分利用这个强大的工具从 Google 的搜索结果中提取信息。我们将介绍关键步骤,从获取 Crawlbase 令牌到处理分页。例如,我们将收集有关 Google 上查询“数据科学”的搜索结果的重要详细信息。

获取正确的 Crawlbase 令牌

在开始 Google 搜索页面抓取之旅之前,我们需要通过获取合适的令牌来保护对 Crawlbase Crawling API 的访问。 Crawlbase 提供两种类型的令牌:静态网站的普通令牌 (TCP) 和动态页面的 JavaScript 令牌 (JS)。 对于 Google 搜索页面,Normal Token 是一个不错的选择。

1
2
3
4
 爬行基地 进口 抓取API

# 使用您的 Crawlbase JavaScript 令牌初始化 Crawling API
api = 爬行API({ '令牌': 'CRAWLBASE_NORMAL_TOKEN' })

您可以获得您的 Crawlbase 令牌 这里。 在其上创建帐户后。

设置 Crawlbase 抓取 API

有了我们的令牌,让我们继续配置 Crawlbase 爬行 API 以进行有效的数据提取。 爬取 API 响应可以通过两种格式获取:HTML 或 JSON。 默认情况下,API 以 HTML 格式返回响应。 但是,我们可以指定“format”参数来接收 JSON 格式的响应。

HTML 响应:

1
2
3
4
5
6
7
:
网址: “被抓取的URL”
原始状态: 200
电脑状态: 200

Body:
页面的 HTML

JSON 响应:

1
2
3
4
5
6
7
// 传递查询参数“format=json”以接收 JSON 格式的响应
{
“原始状态”: “200”,
“电脑状态”: 200,
“网址”: “被抓取的URL”,
“身体”: “页面的 HTML”
}

我们可以阅读更多关于抓取 API 响应的信息 这里。。 例如,我们将使用 JSON 响应。 我们将利用初始化的 API 对象来发出请求。 使用以下命令指定您要抓取的 URL api.get(url, options={}) 功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 爬行基地 进口 抓取API
进口 JSON

# 使用您的 Crawlbase Normal 令牌初始化 Crawling API
api = 爬行API({ '令牌': 'CRAWLBASE_NORMAL_TOKEN' })

# 您要抓取的 Google 搜索页面的 URL
谷歌搜索网址= 'https://www.google.com/search?q=data+science'

# 抓取 API 的选项
选项= {
'格式': 'json'
}

# 发出请求以使用选项抓取 Google 搜索页面
响应 = api.get(google_search_url, 选项)

# 检查请求是否成功
if 回复[“标题”]['pc_status'] == '200':
# 解码字节数据后从响应体加载 JSON
response_json = json.loads(响应['身体']。解码('拉丁1'))

# 漂亮的打印响应体
打印(json.dumps(response_json, 缩进=4, 排序键=))
其他:
打印(“检索页面失败。状态代码:”, 回复['状态代码'])

在上面的代码中,我们初始化了 API,定义了 Google 搜索 URL,并设置了 Crawling API 的选项。 我们传递值为“json”的“format”参数,以便我们可以得到 JSON 格式的响应。 Crawling API 提供了许多其他重要参数。 您可以阅读有关他们的信息 这里。.

成功执行代码后,您将得到如下输出。

1
2
3
4
5
6
{
“身体”: “已抓取页面的 HTML”,
“原始状态”: 200,
“电脑状态”: 200,
“网址”: “https://www.google.com/search?q=data+science”
}

选择理想的刮刀

Crawling API 为不同的重要网站(包括 Google)提供了多个内置抓取工具。 您可以阅读有关可用的抓取工具的信息 这里。。 “scraper”参数用于根据Crawlbase API提供的特定scraper来解析检索到的数据。 这是可选的; 如果未指定,您将收到用于手动抓取的页面的完整 HTML。 如果使用此参数,响应将以 JSON 形式返回,其中包含根据指定抓取工具解析的信息。

示例:

1
2
# 使用特定抓取工具的示例
响应 = api.get('https://www.google.com/search?q=your_search_query',{ '刮刀': 'scraper_name' })

可用的抓取工具之一是“google-serp”,专为 Google 搜索结果页面而设计。 它返回一个包含广告等详细信息的对象,人们还喜欢部分详细信息、搜索结果、相关搜索等。 这包括我们想要的所有信息。 您可以阅读“google-serp”抓取工具 这里。.

让我们将此参数添加到我们的示例中,看看我们在响应中得到什么:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 爬行基地 进口 抓取API
进口 JSON

# 使用您的 Crawlbase Normal 令牌初始化 Crawling API
api = 爬行API({ '令牌': 'CRAWLBASE_NORMAL_TOKEN' })

# 您要抓取的 Google 搜索页面的 URL
谷歌搜索网址= 'https://www.google.com/search?q=data+science'

# 抓取 API 的选项
选项= {
'刮刀': “谷歌搜索引擎”
}

# 发出请求以使用选项抓取 Google 搜索页面
响应 = api.get(google_search_url, 选项)

# 检查请求是否成功
if 回复['状态代码'] == 200 回复[“标题”]['pc_status'] == '200':
# 解码字节数据后从响应体加载 JSON
response_json = json.loads(响应['身体']。解码('拉丁1'))

# 漂亮的打印响应体
打印(json.dumps(response_json, 缩进=4, 排序键=))
其他:
打印(“检索页面失败。状态代码:”, 回复['状态代码'])

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
{
“身体”: {
“广告”: [],
“结果数”: 2520000000,
《人家也问》: [
{
“说明”: “数据科学家使用数据来理解和解释周围的现象,并帮助组织做出更好的决策。作为一名数据科学家,工作可以在智力上具有挑战性,在分析上令人满意,并使你处于技术新进步的最前沿。15 月 2023 日, XNUMX”,
“目的地”: {
“文本”: “Courserahttps://www.coursera.org \u00e2\u0080\u00ba Coursera 文章 \u00e2\u0080\u00ba 数据”,
“网址”: "https://www.coursera.org/articles/what-is-a-data-scientist#:~:text=A%20data%20scientist%20uses%20data,of%20new%20advances%20in%20technology."
},
“位置”: 1,
“标题”: “数据科学家到底是做什么的?”,
“网址”: "https://google.com/search?sca_esv=561439800&q=What+exactly+does+a+data+scientist+do%3F&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQzmd6BAgvEAY"
},
{
“说明”: “是的,因为它需要数学、统计学和计算机编程方面的坚实基础,所以进入数据科学学位可能很困难。然而,任何拥有适当数量的人都可以获得在该领域脱颖而出所需的能力和知识。努力和承诺。11 年 2023 月 XNUMX 日”,
“目的地”: {
“文本”: “simplilearn.comhttps://www.simplilearn.com \u00e2\u0080\u00ba is-data-science-hard-article”,
“网址”: "https://www.simplilearn.com/is-data-science-hard-article#:~:text=Yes%2C%20because%20it%20demands%20a,amount%20of%20effort%20and%20commitment."
},
“位置”: 2,
“标题”: “数据科学太难了吗?”,
“网址”: "https://google.com/search?sca_esv=561439800&q=Is+data+science+too+hard%3F&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQzmd6BAgqEAY"
},
{
“说明”: “数据科学需要编码吗?是的,数据科学需要编码,因为它使用 Python 和 R 等语言来创建机器学习模型并处理大型数据集。28 年 2023 月 XNUMX 日”,
“目的地”: {
“文本”: “simplilearn.comhttps://www.simplilearn.com \u00e2\u0080\u00ba 我需要做什么技能...”,
“网址”: "https://www.simplilearn.com/what-skills-do-i-need-to-become-a-data-scientist-article#:~:text=Does%20Data%20Science%20Require%20Coding,and%20deal%20with%20large%20datasets."
},
“位置”: 3,
“标题”: “数据科学是一种编码吗?”,
“网址”: "https://google.com/search?sca_esv=561439800&q=Is+data+science+a+coding%3F&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQzmd6BAgrEAY"
},
{
“说明”: “数据科学是一个好的职业吗?数据科学是一个梦幻般的职业,具有巨大的未来增长潜力。已经有大量的需求、有竞争力的薪酬和多种福利。公司正在积极寻找能够收集有价值信息的数据科学家。”来自海量数据的信息。19年2023月XNUMX日",
“目的地”: {
“文本”: “simplilearn.comhttps://www.simplilearn.com \u00e2\u0080\u00ba 是数据科学a-好车...”,
“网址”: "https://www.simplilearn.com/is-data-science-a-good-career-choice-article#:~:text=View%20More-,Is%20data%20science%20a%20good%20career%3F,from%20massive%20amounts%20of%20data."
},
“位置”: 4,
“标题”: “数据科学是个好职业吗?”,
“网址”: "https://google.com/search?sca_esv=561439800&q=Is+data+science+a+good+career%3F&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQzmd6BAgsEAY"
}
],
“相关搜索”: [
{
“标题”: “数据科学工作”,
“网址”: "https://google.com/search?sca_esv=561439800&q=Data+science+jobs&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQ1QJ6BAhVEAE"
},
{
“标题”: “数据科学薪资”,
“网址”: "https://google.com/search?sca_esv=561439800&q=Data+science+salary&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQ1QJ6BAhQEAE"
},
{
“标题”: “数据科学学位”,
“网址”: "https://google.com/search?sca_esv=561439800&q=Data+Science+degree&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQ1QJ6BAhREAE"
},
{
“标题”: “数据科学 - 维基百科”,
“网址”: "https://google.com/search?sca_esv=561439800&q=data+science+-+wikipedia&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQ1QJ6BAhTEAE"
},
{
“标题”: “数据科学的定义和示例”,
“网址”: "https://google.com/search?sca_esv=561439800&q=Data+science+definition+and+example&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQ1QJ6BAhUEAE"
},
{
“标题”: 《数据科学大纲》,
“网址”: "https://google.com/search?sca_esv=561439800&q=Data+Science+syllabus&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQ1QJ6BAhSEAE"
},
{
“标题”: “数据科学与数据分析”,
“网址”: "https://google.com/search?sca_esv=561439800&q=Data+science+vs+data+analytics&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQ1QJ6BAhPEAE"
},
{
“标题”: “Python 中的数据科学是什么”,
“网址”: "https://google.com/search?sca_esv=561439800&q=What+is+Data+Science+in+Python&sa=X&ved=2ahUKEwikkP3WyYWBAxUkkWoFHTxKCSIQ1QJ6BAhNEAE"
}
],
“搜索结果”: [
{
“说明”: “数据科学将数学和统计学、专业编程、高级分析、人工智能 (AI) 和特定主题的机器学习结合起来……”,
“目的地”: “IBMhttps://www.ibm.com\u00e2\u0080\u00ba 主题\u00e2\u0080\u00ba 数据科学”,
“位置”: 1,
“发布日期”: "",
“标题”: “什么是数据科学?”,
“网址”: “https://www.ibm.com/topics/data-science”
},
{
“说明”: “数据科学家检查哪些问题需要回答以及在哪里可以找到相关数据。他们具有商业头脑和分析能力以及......”,
“目的地”: “加州大学伯克利分校 https://ischoolonline.berkeley.edu \u00e2\u0080\u00ba 数据科学”,
“位置”: 2,
“发布日期”: "",
“标题”: “什么是数据科学? - 加州大学伯克利分校在线”,
“网址”: “https://ischoolonline.berkeley.edu/data-science/what-is-data-science/”
},
{
“说明”: “数据科学家是创建编程代码并将其与统计知识相结合以从数据中获得见解的专业人士。”,
“目的地”: “维基百科https://en.wikipedia.org \u00e2\u0080\u00ba wiki \u00e2\u0080\u00ba Data_science”,
“位置”: 3,
“发布日期”: "",
“标题”: “数据科学”,
“网址”: “https://en.wikipedia.org/wiki/Data_science”
},
{
“说明”: “数据科学家的职责包括制定数据分析策略、准备分析数据、探索、分析和可视化数据……”,
“目的地”: “Oraclehttps://www.oracle.com \u00e2\u0080\u00ba 什么是数据科学”,
“位置”: 4,
“发布日期”: "",
“标题”: “什么是数据科学?”,
“网址”: “https://www.oracle.com/what-is-data-science/”
},
{
“说明”: “1 年 2023 月 00 日 \u2e0080\u0094\uXNUMX 数据科学是一个研究领域,它使用现代工具和技术处理大量数据,以发现看不见的模式,得出......”,
“目的地”: “Simplilearn.comhttps://www.simplilearn.com \u00e2\u0080\u00ba 数据科学教程”,
“位置”: 5,
“发布日期”: "",
“标题”: “什么是数据科学?简单解释及更多内容”,
“网址”: “https://www.simplilearn.com/tutorials/data-science-tutorial/what-is-data-science”
},
{
“说明”: “15 年 2023 月 00 日 \u2e0080\u0094\uXNUMX 数据科学家使用数据来理解和解释周围的现象,并帮助组织做出更好的决策。”,
“目的地”: “Courserahttps://www.coursera.org \u00e2\u0080\u00ba Coursera 文章 \u00e2\u0080\u00ba 数据”,
“位置”: 6,
“发布日期”: "",
“标题”: “什么是数据科学家?薪资、技能以及如何......”,
“网址”: “https://www.coursera.org/articles/what-is-a-data-scientist”
},
{
“说明”: “数据科学是数学、统计学、机器学习和计算机科学的结合。数据科学正在收集、分析和解释数据......”,
“目的地”: “伟大的学习https://www.mygreatlearning.com\u00e2\u0080\u00ba博客\u00e2\u0080\u00ba什么是数据......”,
“位置”: 7,
“发布日期”: "",
“标题”: “什么是数据科学?:初学者指南”,
“网址”: “https://www.mygreatlearning.com/blog/what-is-data-science/”
},
{
“说明”: “数据科学专业和课程教授解释数据、执行分析以及理解和交流可操作的基础知识……”,
“目的地”: “Courserahttps://www.coursera.org \u00e2\u0080\u00ba 浏览\u00e2\u0080\u00ba 数据科学”,
“位置”: 8,
“发布日期”: "",
“标题”: “最佳在线数据科学课程 [2023]”,
“网址”: “https://www.coursera.org/browse/data-science”
},
{
“说明”: “5 年 2023 月 00 日 \u2e0080\u0094\uXNUMX 数据科学是一个多学科研究领域,它应用技术和工具来获取有意义的信息和可行的见解......”,
“目的地”: “内置 https://builtin.com \u00e2\u0080\u00ba 数据科学”,
“位置”: 9,
“发布日期”: "",
“标题”: “什么是数据科学?完整指南。”,
“网址”: “https://builtin.com/data-science”
}
],
「零食包」: {
“地图链接”: "",
“更多地点链接”: "",
“结果”: []
}
},
“原始状态”: 200,
“电脑状态”: 200,
“网址”: “https://www.google.com/search?q=data%20science”
}

上面的输出显示“google-serp”抓取工具非常有效地完成其工作。 它废弃了所有重要信息,包括相关 Google 搜索页面的 9 个搜索结果,并为我们提供了一个 JSON 对象,我们可以根据要求在代码中轻松使用它。

轻松管理分页

在抓取 Google 搜索页面时,掌握分页对于收集全面数据至关重要。 Crawlbase“google-serp”抓取工具在其 JSON 响应中提供了有价值的信息:结果总数,称为“numberOfResults”。 此信息充当我们有效分页处理的指导星。

您的抓取工具必须巧妙地浏览隐藏在分页中的各个结果页面,以捕获所有搜索结果。 您将使用“start”查询参数来成功完成此操作,这反映了 Google 的方法。 Google 通常每页显示 XNUMX 个搜索结果,从而在每页之间创建 XNUMX 个结果的一致间隙,如下图所示:

确定“start”查询参数的正确值只需增加响应中最后一个“searchResults”对象的位置并将其添加到先前的起始值中即可。 您将继续此过程,直到达到所需的结果数量或收获最大数量的可用结果。 这种系统方法可确保收集有价值的数据,使您能够从 Google 搜索页面中提取全面的见解。

让我们更新示例代码来处理分页并抓取所有产品:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 爬行基地 进口 抓取API
进口 JSON

# 使用您的 Crawlbase Normal 令牌初始化 Crawling API
api = 爬行API({ '令牌': 'CRAWLBASE_NORMAL_TOKEN' })

# 您要抓取的 Google 搜索页面的 URL
谷歌搜索网址= 'https://www.google.com/search?q=data+science'

# 抓取 API 的选项
选项= {
'刮刀': “谷歌搜索引擎”
}

# 存储抓取的搜索结果的列表
搜索结果 = []

DEF 获取总结果(网址):
# 发出请求以使用选项抓取 Google 搜索页面
响应 = api.get(url, 选项)

# 检查请求是否成功
if 回复['状态代码'] == 200 回复[“标题”]['pc_status'] == '200':
# 解码字节数据后从响应体加载 JSON
response_json = json.loads(响应['身体']。解码('拉丁1'))

# 获取抓取结果
scraper_result = 响应_json['身体']

# 提取分页信息
结果数 = scraper_result.get(“结果数”, 没有)
回报 结果数
其他:
打印(“检索页面失败。状态代码:”, 回复['状态代码'])
回报 没有

DEF 抓取搜索结果(网址):
# 发出请求以使用选项抓取 Google 搜索页面
响应 = api.get(url, 选项)

# 检查请求是否成功
if 回复['状态代码'] == 200 回复[“标题”]['pc_status'] == '200':
# 解码字节数据后从响应体加载 JSON
response_json = json.loads(响应['身体']。解码('拉丁1'))

# 获取抓取结果
scraper_result = 响应_json['身体']

# 从 JSON 响应中提取搜索结果
结果= scraper_result.get(“搜索结果”,[])
search_results.extend(结果)

其他:
打印(“检索页面失败。状态代码:”, 回复['状态代码'])

# 提取分页信息
结果数 = get_total_results(google_search_url) or 50
# 初始化search_results的起始位置
起始值= 1

# 例如将搜索结果限制为最多 50 个
# 您可以将限制增加到 numberOfResults 以获取最大搜索结果
起始值 50:
if 起始值 > 结果数:
打破
页面网址 = f'{google_search_url}&开始={起始值}'
scrape_search_results(page_url)
起始值 = 起始值 + 搜索结果[-1]['位置'] + 1

# 根据需要处理收集到的搜索结果
打印(f'总搜索结果: {LEN(搜索结果)}')

示例输出:

1
总搜索结果:47

正如您在上面看到的,我们现在有 47 个搜索结果,这比我们之前的搜索结果要多得多。 您可以更新代码中的限制(例如设置为 50),并且可以在可用结果数量范围内抓取任意数量的搜索结果。

将数据保存到 SQLite 数据库

使用 Crawlbase API 成功抓取 Google 搜索结果后,您可能希望保留此数据以供进一步分析或在您的应用程序中使用。 存储搜索结果等结构化数据的一种有效方法是使用 SQLite 数据库,该数据库是轻量级、独立的且易于在 Python 中使用。

以下是将每个搜索结果对象的 URL、标题、描述和位置保存到 SQLite 数据库的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
进口 sqlite3
爬行基地 进口 抓取API
进口 JSON

DEF scrape_google_搜索():
# 使用您的 Crawlbase Normal 令牌初始化 Crawling API
api = 爬行API({'令牌': 'CRAWLBASE_NORMAL_TOKEN'})

# 您要抓取的 Google 搜索页面的 URL
谷歌搜索网址= 'https://www.google.com/search?q=data+science'

# 抓取 API 的选项
选项= {
'刮刀': “谷歌搜索引擎”
}

# 存储抓取的搜索结果的列表
搜索结果 = []

DEF 获取总结果(网址):
# 发出请求以使用选项抓取 Google 搜索页面
响应 = api.get(url, 选项)

# 检查请求是否成功
if 回复['状态代码'] == 200 回复[“标题”]['pc_status'] == '200':
# 解码字节数据后从响应体加载 JSON
response_json = json.loads(响应['身体']。解码('拉丁1'))

# 获取抓取结果
scraper_result = 响应_json['身体']

# 提取分页信息
结果数 = scraper_result.get(“结果数”, 没有)
回报 结果数
其他:
打印(“检索页面失败。状态代码:”, 回复['状态代码'])
回报 没有

DEF 抓取搜索结果(网址):
# 发出请求以使用选项抓取 Google 搜索页面
响应 = api.get(url, 选项)

# 检查请求是否成功
if 回复['状态代码'] == 200 回复[“标题”]['pc_status'] == '200':
# 解码字节数据后从响应体加载 JSON
response_json = json.loads(响应['身体']。解码('拉丁1'))

# 获取抓取结果
scraper_result = 响应_json['身体']

# 从 JSON 响应中提取搜索结果
结果= scraper_result.get(“搜索结果”,[])
search_results.extend(结果)

其他:
打印(“检索页面失败。状态代码:”, 回复['状态代码'])

DEF 初始化数据库():
# 创建或连接到 SQLite 数据库
conn = sqlite3.connect('搜索结果.db')
光标 = conn.cursor()

# 创建一个表来存储搜索结果
游标.执行('''
如果不存在则创建表 search_results (
标题文本,
网址文本,
描述文本,
位置 整数
)
''')

# 提交更改并关闭数据库连接
conn.commit()
conn.close()

DEF 插入搜索结果(结果列表):
# 创建或连接到 SQLite 数据库
conn = sqlite3.connect('搜索结果.db')
光标 = conn.cursor()

# 遍历result_list并将数据插入数据库
导致 in 结果列表:
标题=结果.get('标题', '')
url = 结果.get('网址', '')
描述 = 结果.get('描述', '')
位置 = 结果.get('位置', 没有)

游标.执行('插入搜索结果值(?,?,?,?)',
(标题、网址、描述、位置))

# 提交更改并关闭数据库连接
conn.commit()
conn.close()

# 初始化数据库
初始化数据库()

# 提取分页信息
结果数 = get_total_results(google_search_url) or 50
# 初始化search_results的起始位置
起始值= 1

# 例如将搜索结果限制为最多 50 个
# 您可以将限制增加到 numberOfResults 以获取最大搜索结果
起始值 50:
if 起始值 > 结果数:
打破
页面网址 = f'{google_search_url}&开始={起始值}'
scrape_search_results(page_url)
起始值 = 起始值 + 搜索结果[-1]['位置'] + 1

# 将搜索结果保存到数据库中
插入搜索结果(搜索结果)

if __名字__ == “__主要的__”:
scrap_google_search()

在上面的代码中, scrape_google_search() 函数是入口点。 它使用身份验证令牌初始化 Crawlbase API,并指定要抓取的 Google 搜索 URL。 它还设置了一个名为的空列表 search_results 收集提取的搜索结果。

这款 scrape_search_results(url) 函数将 URL 作为输入,向 Crawlbase API 发送请求以获取 Google 搜索结果页面,并从响应中提取相关信息。 然后,它将这些数据附加到 search_results 名单。

另外两个关键功能, initialize_database()insert_search_results(result_list),处理管理 SQLite 数据库。 这 initialize_database() 函数负责创建或连接到名为的数据库文件 search_results.db 定义一个表结构来存储搜索结果。 这 insert_search_results(result_list) 函数将抓取的搜索结果插入到该数据库表中。

该脚本还通过不断发出对后续搜索结果页面的请求来处理分页。 在此示例中,搜索结果的最大限制设置为 50。 然后,抓取的数据(包括标题、URL、描述和位置)将保存到 SQLite 数据库中,我们可以使用它进行进一步分析。

search_results 数据库预览:

数据库截图

7. 使用 Crawlbase 抓取 Google 搜索结果

网络抓取是一项变革性技术,使我们能够从互联网上浩瀚的信息海洋中提取有价值的见解,而谷歌搜索页面是主要的数据源。 本博客使用 Python 和 Crawlbase Crawling API 作为我们值得信赖的伙伴,带您全面进入网络抓取的世界。

我们首先了解网络抓取的重要性,揭示其在简化数据收集、提高效率以及为各个领域的数据驱动决策提供信息方面的潜力。 然后,我们介绍了 Crawlbase Crawling API,这是一款专为网页抓取而定制的强大且用户友好的工具,强调其可扩展性、可靠性和实时数据访问。

我们介绍了基本的先决条件,包括配置开发环境、安装必要的库以及创建 Crawlbase 帐户。我们学习了如何获取令牌、设置 API、选择理想的抓取工具以及有效管理分页以抓取全面的搜索结果。

现在您已经了解了如何进行网页抓取,您可以从 Google 搜索结果中探索和收集信息。无论您是喜欢处理数据的人、市场研究人员还是商业专业人士,网络抓取都是一项有用的技能。它可以给您带来优势并帮助您获得更深入的见解。因此,当您开始网络抓取之旅时,我希望您收集大量有用的数据并获得大量有价值的见解。

8. 常见问题解答

问:网页抓取 Google 搜索结果页面的意义何在?

网页抓取 Google 搜索结果非常重要,因为它可以访问互联网上的大量数据。Google 是获取信息的主要门户,抓取其搜索结果可用于各种应用,包括市场研究、数据分析、竞争对手分析和内容聚合。

问:使用“google-serp”爬虫的主要优点是什么?

“google-serp”抓取器是专门为抓取 Google 搜索结果页面而设计的。 它提供结构化 JSON 响应,其中包含搜索结果、广告、相关搜索等基本信息。 该抓取工具的优势在于它简化了数据提取过程,使您可以更轻松地处理收集的数据。 它还确保您从 Google 动态搜索页面捕获所有相关信息。

问:Google 搜索页面的关键组成部分是什么?为什么理解它们对于网络抓取很重要?

谷歌搜索页面由几个组件组成:搜索栏、搜索工具、广告、位置、搜索结果、“人们也问”部分、相关搜索、知识图和分页。 了解这些组件对于网络抓取至关重要,因为它可以帮助您识别所需的数据并有效地浏览动态内容。

问:在网页抓取 Google 搜索结果时该如何处理分页,为什么有必要这样做?

处理网络抓取 Google 搜索页面中的分页涉及浏览多个结果页面以收集全面的数据。 这是必要的,因为 Google 在多个页面上显示搜索结果,并且您需要抓取所有相关信息。 您可以使用“start”查询参数和结果总数来确定每个页面的正确 URL 并确保完整的数据提取。