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

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

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

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

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

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

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

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

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

使用 Crawlbase Crawling API 抓取 Google 搜索结果

爬行基地 Crawling API 在网页抓取方面处于领先地位,为用户提供了一种强大而灵活的方法来从网站提取数据。它旨在通过提供带有强大工具的简单界面,使棘手的网页抓取工作变得更容易。借助 Crawlbase,您可以设置自动从网站(甚至是 Google 搜索页面等棘手的网站)抓取数据。这种自动化功能可为您节省大量时间和工作,否则您将需要花费大量时间和精力来手动收集数据。让我们仔细看看这个选择背后的想法:

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

探索 Crawlbase Python 库

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

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

  1. 初始化: 通过初始化开始你的旅程 Crawling API 使用您的 Crawlbase 令牌进行分类。
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 Crawling API 并能很好地使用它。我们即将深入研究 Google 的庞大搜索结果,揭开获取网络数据的秘密。让我们开始探索 Google 提供的所有信息吧!

4. 成功起步的基本要求

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

配置你的开发环境以抓取 Google 数据

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

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

安装必要的库来抓取 Google 搜索结果

与 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 Crawling API。您可以在这里找到您的代币。

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

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

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

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

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

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

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

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

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

获取正确的 Crawlbase 令牌

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

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

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

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

设置Crawlbase Crawling API

拿到 token 后,我们来配置 Crawlbase Crawling API 以有效地提取数据。 Crawling 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”
}

我们可以阅读更多关于 Crawling 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

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

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

# 选项 Crawling 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

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

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

# 选项 Crawling 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

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

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

# 选项 Crawling 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_搜索():
# 初始化 Crawling API 使用您的 Crawlbase Normal 令牌
api = 爬行API({'令牌': 'CRAWLBASE_NORMAL_TOKEN'})

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

# 选项 Crawling 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 搜索结果中探索和收集信息。无论您是喜欢处理数据的人、市场研究人员还是商业专业人士,网络抓取都是一项有用的技能。它可以给您带来优势并帮助您获得更深入的见解。因此,当您开始网络抓取之旅时,我希望您收集大量有用的数据并获得大量有价值的见解。

我们的 API 可继续适应最新的 Google 变更

8. 常见问题 (FAQ)

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

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

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

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

抓取 Google SERP 结果并不违法。但是,您必须遵守 Google 的服务条款。最好考虑使用投诉 API,因为它们在道德界限内提供对数据的结构化访问。

问:是否可以抓取 Google 活动结果?

Google 允许用户搜索全球范围内举办的音乐会、节日、展览和聚会等活动。当您输入相关关键字时,标准搜索结果上方会出现一个活动表,显示活动标题、地点、日期、表演者等详细信息。虽然这些公开数据可以被抓取,但遵守所有法律准则和法规至关重要。

问:我可以抓取 Google 本地搜索结果吗?

Google 本地搜索结果由相关性和与用户的距离决定。例如,搜索“咖啡店”将显示附近的选项以及路线。这些结果与专注于路线计算和基于位置的搜索的 Google 地图不同。只要您遵守法律要求,就可以将 Google 本地搜索结果用于个人或商业用途。

问:我可以抓取 Google 视频搜索结果吗?

抓取公开的 Google 视频结果通常是合法的,但必须遵守所有适用的规则和规定。提取视频标题、说明和网址等元数据可能有助于实现各种目的。但是,如果您计划收集大量数据,最好寻求法律顾问的帮助,以避免潜在的问题。从 Google 收集公开信息时,务必将合规性放在首位。