如果您的项目涉及新闻、报告、股票报价或任何与财务管理相关的财务数据,雅虎财经仍然是数据提取的首选。截至 335 年 2024 月,其访问量超过 203 亿,与《今日美国》(154 亿)、《商业内幕》(67 亿)和彭博社(XNUMX 万)等市场上的其他老牌参与者相比,它显然处于领先地位。

雅虎财经统计

资源

准备好自动化从雅虎财经收集数据了吗?本文将逐步指导您完成该过程。我们将向您展示如何将 Crawlbase API 与 Python 结合使用来构建强大且高效的抓取工具。跟随我们的脚步,看看它有多么容易。

目录

四、项目范围

2。 先决条件

3. 安装依赖项

4. 爬取雅虎财经网页

5. 使用 bs4 从 Yahoo Finance HTML 中抓取标题

6. 降低价格

7. 取消价格变动

8. 取消截止日期

9. 完成雅虎财经 Scraper

10。 结论

四、项目范围

该项目的范围包括利用 Python 编程语言、Crawlbase 的 Crawling API 和 BeautifulSoup 库开发网络抓取工具。我们的主要目标是从托管在以下网站上的网页中提取特定数据 雅虎财经 网站并以简洁的格式呈现信息,重点关注股票市场信息,例如公司名称、股票价格、变动和截止日期。

目标

网页抓取工具开发: 制定一个 蟒蛇 基于网络抓取的工具,能够从雅虎财经的目标网页中提取数据,并以可读的格式呈现提取的数据。我们的目标站点依赖 AJAX 来动态加载和更新数据,因此我们需要一个能够处理 JavaScript 的工具。

Crawlbase API 集成: 整合 抓取 API 进入抓取工具,以便更有效地从目标网页检索 HTML 内容。 Crawling API 将用于通过其 JavaScript 渲染功能加载和处理动态内容,同时避免任何潜在的 IP 块和验证码。

数据解析: 利用 美丽汤 库来解析 HTML 内容,删除不需要的信息,并使用精确的选择器提取干净且相关的数据。

数据导出: 将提取的数据导出为结构化格式,特别是 JSON,以供进一步分析和利用。

本指南将为您提供为雅虎财经股票数据构建网络抓取工具的知识。通过此项目,您可以释放宝贵的见解,可用于市场研究、分析等各种目的。

2。 先决条件

作为开发人员的良好实践,我们应该始终首先讨论项目的需求。在进入实际的编码阶段之前,我们应该了解要点。以下是该项目的重要基础:

Python基础知识

由于我们将使用 Python 和 Beautifulsoup,因此您自然应该对 Python 编程语言有基本的了解。如果这是您第一次,我们鼓励您注册基础课程或至少观看视频教程并做一些基本的编码练习,然后再尝试构建自己的抓取工具。

安装了Python

如果您的系统上尚未安装 Python,请访问官方 Python网站 并下载最新版本。按照提供的安装说明在您的计算机上设置 Python。

关于 IDE

有多个可用于 Python 的集成开发环境 (IDE),您可以将其用于此项目,每个环境都有自己的功能和优点。以下是一些流行的选项:

PyCharm: 由 JetBrains 开发, PyCharm 是一款功能强大、功能丰富的 IDE,具有智能代码完成、代码分析和调试功能。它有两个版本:社区(免费)和专业(付费)。

Visual Studio 代码(VS 代码): 由Microsoft开发, VS代码 是一个轻量级但功能强大的 IDE,通过扩展对 Python 开发提供广泛支持。它提供 IntelliSense、调试和内置 Git 集成等功能。

Jupyter实验室: Jupyter实验室 是一个交互式开发环境,允许您创建和共享包含实时代码、方程、可视化和叙述文本的文档。它特别适合数据科学和研究型项目。

崇高文字: 崇高的文字 是一款轻量级、快速的文本编辑器,以其速度和简单性而闻名。它提供了广泛的插件和自定义选项,与正确的插件配合使用时适合 Python 开发。

您可以灵活地使用任何这些 IDE 与 Crawling API 或使用 HTTP 请求的任何其他 Web 服务进行交互。选择您最熟悉且最适合您的工作流程和项目要求的一种。

Crawlbase API 帐户

Crawlbase 的 Crawling API 将成为该项目的核心。在开始本指南之前,您必须拥有一个帐户并掌握您的帐户令牌,以便在进入编码阶段后流程更加顺畅。

只需注册一个帐户并转到您的帐户文档即可获取您的代币。对于这个项目,我们将使用 JavaScript 请求令牌 抓取雅虎财经页面。

爬网帐户

3. 安装依赖项

一旦安装了 Python 并且您已经确定了自己喜欢的 IDE,就可以为我们的项目安装必要的包了。在编程中,包是相关模块或类的集合,它们组织在一起以提供一组功能。包有助于将代码组织到分层命名空间中,这使得跨不同项目管理和重用代码变得更加容易。

要安装包,只需打开命令提示符 (Windows) 或终端 (macOS/Linux),创建一个要存储 Python 代码的目录,然后使用 pip 命令安装包,如下所示:

1
2
点安装爬虫库
点安装beautifulsoup4

上面的命令将安装以下内容:

Crawlbase Python 库: 一个轻量级、无依赖的 Python 类,充当 Crawlbase API 的包装器。它本质上是一个包,因此您可以轻松地将各种 Crawlbase API(包括 Crawling API)集成到您的项目中。

美丽汤4: 用于网络抓取目的的 Python 库。它允许您从 HTML 和 XML 文件中提取数据,从而更轻松地解析和浏览文档的结构。 Beautiful Soup 通过将原始标记转换为可导航的解析树,提供了一个简单的界面来处理 HTML 和 XML 文档。

另外,我们将使用 JSON 模块将数据导出到 JSON 文件,它是 Python 的内置包,可用于处理 JSON 数据。

4. 抓取雅虎财经网页

现在是时候编写我们的代码了。我们首先编写一段代码来抓取目标网页的完整 HTML 源代码。在此步骤中,我们将使用 Crawlbase 包。

首先打开您喜欢的文本编辑器或 IDE 并创建一个新的 Python 文件。为了本指南的目的,我们创建一个名为 scraper.py 从您的终端/控制台:

1
触摸刮刀.py

为了演示,我们将以此为目标 雅虎财经页面。

雅虎财经网页

复制下面的完整代码并阅读解释以理解每个部分:

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
 爬行基地 进口 抓取API

DEF (page_url、api_token):
尝试:
# 使用提供的令牌初始化 CrawlingAPI 对象
api = 爬行API({'令牌': api_token})

# 获取页面内容
响应 = api.get(page_url)

# 检查请求是否成功
if 回复['状态代码'] == 200:
# 提取数据
打印(回复[“身体”])
其他:
打印(f“错误: {回复}")


特殊课程 as e:
打印(f"爬取时发生错误: {e}")
回报 {}

if __名字__ == “__主要的__”:
# 使用来自 Crawlbase 的 Javascript 请求令牌
api_令牌= 'Crawlbase_Token'

页面网址 = 'https://finance.yahoo.com/quote/AAPL'

抓取(page_url,api_token)

如何使用:

我们已经导入了 CrawlingAPI 来自crawlbase模块的类。此类允许与 Crawlbase API 进行交互以进行网络爬行。

crawl 函数有两个参数: page_url (要抓取的页面的 URL)和 api_token (用于验证对 Crawlbase API 的请求的 API 令牌)。

然后代码被包装在 try 块来处理潜在的错误。如果在执行过程中出现任何错误,它们会被捕获并在 except 块。

的一个实例 CrawlingAPI 类是使用提供的 API 令牌创建的,并且 get 方法用于向指定的对象发出 GET 请求 page_url。来自 API 的响应存储在 response 变量。

该脚本还会检查响应的 HTTP 状态代码是否为 200,这表明请求成功。如果请求成功,响应正文(HTML 源代码)将打印到控制台。如果请求失败或执行过程中发生任何异常,错误消息将打印到控制台。

让我们尝试执行代码。您可以再次转到控制台并输入以下命令:

1
蟒蛇 scraper.py

如果成功,您将收到类似于以下内容的响应:

雅虎财经 HTML

5. 使用 bs4 从 Yahoo Finance HTML 中抓取标题

在本节中,我们现在将重点关注通过抓取雅虎财经网页获得的 HTML 源代码的内容。我们应该首先调用 Beautiful Soup 库来解析 HTML 并将其以 JSON 格式呈现。

1
2
从crawlbase导入CrawlingAPI
从bs4导入BeautifulSoup

接下来我们需要寻找我们想要提取的数据。搜索公司名称或 职位名称 第一的。您必须使用浏览器开发人员工具检查网页的结构,或通过突出显示标题、右键单击并选择“检查”选项来查看页面源。

雅虎财经标题

一旦获得了标题元素的行,只需使用 BeautifulSoup 选择器来提取数据即可。以下是编写代码的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
DEF 抓取数据(响应):
尝试:
# 使用 Beautiful Soup 解析 HTML 内容
汤 = BeautifulSoup(响应['身体'], 'html.parser')

# 提取所需数据
标题=汤.select_one('h1.svelte-ufs8hf')。文本 if 汤.select_one('h1.svelte-ufs8hf') 其他 不包含

回报 {'标题': 标题}

特殊课程 as e:
打印(f"抓取过程中发生错误: {e}")
回报 {}

该代码首先尝试解析网页的 HTML 内容。它使用 BeautifulSoup 构造函数,传递 HTML 内容 (response['body'])和解析器类型('html.parser').

里面的 try 块中,该函数尝试从解析的 HTML 中提取特定数据。它试图找到一个 <h1> 具有类名的元素 'svelte-ufs8hf' 使用 select_one 方法由美丽汤提供。

一旦找到该元素,它就会检索该元素的文本内容 <h1> 元素并将其分配给变量标题。如果 <h1> 未找到元素, title 被设置为 None.

如果出现错误,它会向控制台打印一条错误消息并返回一个空字典作为后备。

6. 降低价格

我们要为雅虎财经网页提取的下一个相关数据是金融资产​​的最新交易价格,或者只是 价格。首先突出显示价格并检查它,如下图所示:

雅虎财经价格

编写代码来提取 Price 元素:

1
2
3
4
5
6
7
8
9
10
11
12
13
DEF 抓取数据(响应):
尝试:
# 使用 Beautiful Soup 解析 HTML 内容
汤 = BeautifulSoup(响应['身体'], 'html.parser')

# 提取所需数据
价格=汤.select_one('.livePrice.svelte-mgkamr')。文本 if 汤.select_one('.livePrice.svelte-mgkamr') 其他 不包含

回报 {'价格': 价格}

特殊课程 as e:
打印(f"抓取过程中发生错误: {e}")
回报 {}

与上面的代码相同,这将使我们能够从完整的 HTML 源代码中提取特定元素,并删除与我们的项目无关的任何数据。

7. 取消价格变动

我们的下一个目标数据是价格变化。该值代表金融资产(例如股票)相对于前收盘价的价格变化。

雅虎财经调整价格

再次强调,只需突出显示更改价格并获取该元素的适当选择器即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
DEF 抓取数据(响应):
尝试:
# 使用 Beautiful Soup 解析 HTML 内容
汤 = BeautifulSoup(响应['身体'], 'html.parser')

# 提取所需数据
更改 = soup.select_one('.priceChange.svelte-mgkamr')。文本 if 汤.select_one('.priceChange.svelte-mgkamr') 其他 不包含

回报 {'改变': 改变}

特殊课程 as e:
打印(f"抓取过程中发生错误: {e}")
回报 {}

8. 取消截止日期

最后,我们还将刮掉截​​止日期。指金融资产(如股票)在特定日期的收盘价。例如,如果您看到“收盘价”后跟日期“19 年 2024 月 19 日”,则表示所提供的信息与该资产于 2024 年 XNUMX 月 XNUMX 日的收盘价有关。

另请注意,如果显示“开市”,则表示显示的价格是开市时资产开始交易的价格。

雅虎财经截止日期

突出显示数据并转到检查以获取关联的选择器。让我们再次编写代码以使用 BeautifulSoup 提取数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
DEF 抓取数据(响应):
尝试:
# 使用 Beautiful Soup 解析 HTML 内容
汤 = BeautifulSoup(响应['身体'], 'html.parser')

# 提取所需数据
结束日期 = soup.select_one('span.svelte-1dnpe7s')。文本 if 汤.select_one('span.svelte-1dnpe7s') 其他 不包含

回报 {'截止日期': 截止日期}

特殊课程 as e:
打印(f"抓取过程中发生错误: {e}")
回报 {}

9. 完成雅虎财经 Scraper

为每个目标数据编写选择器后,是时候编译代码并使我们的抓取工具发挥作用了。为了您的方便,我们编译了下面的代码并添加了一些行以将响应保存为 JSON 文件。请随意复制并将其保存到本地计算机:

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
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

DEF (page_url、api_token):
尝试:
# 使用提供的令牌初始化 CrawlingAPI 对象
api = 爬行API({'令牌': api_token})

# 获取页面内容
响应 = api.get(page_url)

# 检查请求是否成功
if 回复['状态代码'] != 200:
打印(f“错误: {回复}")
回报 {}

# 抓取的数据
scraped_data = scrape_data(响应)
打印(f'{抓取数据}')
回报 抓取的数据

特殊课程 as e:
打印(f"爬取时发生错误: {e}")
回报 {}

DEF 抓取数据(响应):
尝试:
# 使用 Beautiful Soup 解析 HTML 内容
汤 = BeautifulSoup(响应['身体'], 'html.parser')

# 提取所需数据
标题=汤.select_one('h1.svelte-ufs8hf')。文本 if 汤.select_one('h1.svelte-ufs8hf') 其他 不包含
价格=汤.select_one('.livePrice.svelte-mgkamr')。文本 if 汤.select_one('.livePrice.svelte-mgkamr') 其他 不包含
更改 = soup.select_one('.priceChange.svelte-mgkamr')。文本 if 汤.select_one('.priceChange.svelte-mgkamr') 其他 不包含
结束日期 = soup.select_one('span.svelte-1dnpe7s')。文本 if 汤.select_one('span.svelte-1dnpe7s') 其他 不包含

回报 {'标题': 标题, '价格': 价格, '改变': 改变, '截止日期': 截止日期}

特殊课程 as e:
打印(f"抓取过程中发生错误: {e}")
回报 {}

if __名字__ == “__主要的__”:
# 使用来自 Crawlbase 的 Javascript 请求令牌
api_令牌= 'Crawlbase_Token'

# 要抓取的股票列表
股票=[“苹果”, “特斯拉”, “比特币-美元”]
股票数据 = {‘股票’:[]}

库存 in 库存:
页面网址 = f'https://finance.yahoo.com/quote/{库存}'

# 调用爬取函数并将爬取的数据追加到stocks_data字典中
股票数据[‘股票’].append(爬行(page_url, api_token))

# 将抓取到的数据写入JSON文件
- 打开('yahoo.json', 'w') as f:
json.dump(stocks_data, f)

执行代码以获得响应。使用以下命令:

1
蟒蛇 scraper.py

如果成功,它应该提供类似的输出,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
“股票”: [
{
“标题”: “苹果公司(AAPL)”,
“价钱”: “168.99”,
“改变”: “ -3.70”,
“截止日期”: “截至美国东部时间中午 12:09。市场开放。”
},
{
“标题”: “特斯拉公司(TSLA)”,
“价钱”: “156.90”,
“改变”: “ -4.58”,
“截止日期”: “截至美国东部时间中午 12:09。市场开放。”
},
{
“标题”: “比特币美元(BTC-USD)”,
“价钱”: “61,966.21”,
“改变”: “ -2,804.80”,
“截止日期”: “截至世界标准时间下午 4:08。市场开放。”
}
]
}

就在那里。 JSON 格式响应将允许您有效地使用数据。用它来分析股票市场、比较价格等等。这是你的选择。

10。 结论

恭喜!您已经完成了有关如何使用 Python、Crawlbase API 和 BeautifulSoup 为雅虎财经高效构建抓取工具的综合指南。您已经学习了如何从网页中提取干净且有用的数据,并针对您的项目或分析对其进行自定义。

本指南中共享的代码可供所有感兴趣的人使用。我们鼓励您积极参与它,因为它对每个人都有用,包括各种开发人员、数据科学家,甚至对于好奇的学习者。您可以自由修改和定制代码以满足您的特定要求。调整它以实现自动化,从其他网站抓取数据,提取不同类型的信息,或添加新功能。

我们希望本指南能够达到其目的,并为您提供在项目中有效利用网络抓取所需的技能和工具。祝您抓取愉快,愿您的数据冒险带给您新的发现和见解!

如果您正在寻找类似的其他项目,我们还希望您检查以下内容:

如何抓取 Apartments.com

抓取 Redfin 属性数据

Playwright 网页抓取 2024 - 教程

您有什么想了解更多的吗?我们的支持团队很乐意提供帮助。请 给我们发送电子邮件。

11。 经常问的问题

是的,网络抓取本身并不违法,但查看并遵守您正在抓取的网站的服务条款非常重要。与许多其他网站一样,雅虎财经可能有关于网络抓取活动的特定条款和条件。请务必熟悉这些条款以避免任何法律问题。

如何从雅虎财经抓取数据?

  1. 识别要抓取和检查网站的数据
  2. 选择抓取工具或库以从网页中提取数据
  3. 使用所选的抓取工具向目标 URL 发送 HTTP GET 请求
  4. 利用抓取工具的解析功能解析网页的HTML内容
  5. 根据您的需要,您可以将抓取的数据存储在文件、数据库或数据结构中以供以后分析或直接在应用程序中使用。

我可以使用哪些工具和库来抓取雅虎财经?

Python 中有多种可用于网页抓取的工具和库,包括 BeautifulSoup、Scrapy 和 Selenium。此外,您可以利用 Crawlbase API 等 API 来更轻松地访问网络数据。选择最适合您的项目要求和技术专长的工具或库。