网络抓取和数据提取彻底改变了我们从互联网上的海量数据中收集信息的方式。 像 Google 这样的搜索引擎是知识的宝库,能够从搜索结果中提取有价值的 URL 可以为各种目的改变游戏规则。 无论您是进行市场研究的企业主、寻求信息的数据爱好者,还是需要各种应用程序数据的专业人士,网络抓取都可以为您提供所需的数据。

在这篇博客中,我们将踏上一段旅程,探索抓取 Google 搜索页面、抓取有价值的信息以及有效地将信息存储在 SQLite的 数据库。 我们实现这一目标的工具将是 蟒蛇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. 揭示网页抓取的力量

网络抓取是一种动态技术,涉及从网站提取数据。 这就像拥有一个可以访问网站、收集信息并整理信息供您使用的数字机器人。 网络抓取涉及使用计算机程序或脚本来自动执行从网站收集数据的过程。 网络抓取工具可以自动大规模地执行此操作,而不是手动从网页复制和粘贴信息。 这些工具导航网站、提取特定数据并将其以结构化格式存储以进行分析或存储。

网页抓取的主要优点:

网页抓取的好处
  1. 效率: 网络抓取可自动收集数据,节省您的时间和精力。 它可以快速、准确地处理大量数据。
  2. 数据准确性 抓取可确保直接从源提取数据,从而降低手动数据输入可能出现错误的风险。
  3. 实时洞察: 网络抓取允许您监控网站并收集对于跟踪价格、库存可用性或新闻更新等任务至关重要的最新信息。
  4. 自定义数据提取: 您可以定制网络抓取来收集您需要的特定数据点,无论是产品价格、新闻标题还是研究数据。
  5. 结构化数据: 抓取的数据以结构化格式组织,使其易于在数据库或报告中分析、搜索和使用。
  6. 竞争情报: 网络抓取可以帮助企业监控竞争对手、跟踪市场趋势并发现新机会。
  7. 研究分析: 研究人员可以使用网络抓取来收集学术或市场研究数据,而分析师可以收集用于业务决策的见解。
  8. 自动化: 网络抓取可以自动按计划运行,确保您的数据始终是最新的。

2. 了解 Google 搜索页面抓取的意义

作为全球使用最广泛的搜索引擎,谷歌在这一领域发挥着举足轻重的作用。 抓取 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 爬行 API 处于网络抓取的最前沿,为从网站提取数据提供了强大且多功能的平台。 其主要任务是通过提供用户友好的界面和强大的功能来简化复杂的网络抓取过程。 使用 Crawlbase 作为您的副驾驶,您可以自动从网站提取数据,甚至是像 Google 搜索页面这样动态的网站。 这种自动化可以为您节省宝贵的时间和精力,否则您将花费​​在手动数据收集上。

该 API 打开了通往 Crawlbase 综合爬行基础设施的网关,可通过 Restful API 进行访问。 本质上,您与此 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 爬行 API 的全部潜力,我们转向 Crawlbase Python 库。 该库充当将 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 提供的丰富信息!

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. 搜索结果: 该页面的核心显示与您的搜索相关的网页、文章、图像或其他内容的列表。 每个结果通常都会附有标题、片段和 URL。
  6. 人们还问: 除了搜索结果之外,谷歌通常还会提供“人们也提问”部分,其功能类似于常见问题解答部分。 这包括与搜索查询最相关的问题。
  7. 相关搜索: 谷歌通常会根据您的查询提供相关搜索链接的列表。 这些链接可以带来宝贵的资源来补充您的数据收集。
  8. 知识图: 在页面右侧,您可能会找到一个知识图面板,其中包含有关您搜索的主题的信息。 该面板通常包括关键事实、图像和相关实体。
  9. 分页: 如果存在多页搜索结果,分页链接将出现在底部,允许您浏览结果。

在接下来的部分中,我们将深入研究抓取 Google 搜索页面的技术方面,包括有效提取重要数据、处理分页以及将数据保存到 SQLite 数据库中。

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

本节将深入探讨如何使用 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。 结论

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

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

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

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

8。 经常问的问题

问:网络抓取 Google 搜索页面的意义是什么?

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

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

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

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

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

问:在网络抓取 Google 搜索页面时如何处理分页,为什么有必要?

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