使用 Beautiful Soup 在 Python 中进行网页抓取和解析 HTML
利用 Python 和 Beautiful Soup 来发挥网页抓取的力量:一个 MIDI 音乐示例
互联网是一个信息宝库,但如果没有专用的 API,以编程方式访问它可能会很困难。 Python 的 Beautiful Soup 库提供了一个强大的解决方案,使您能够直接从网页中抓取和解析数据。
让我们通过抓取 MIDI 数据来训练 Magenta 神经网络来生成经典的任天堂风格音乐来探索这一点。 我们将从视频游戏音乐档案 (VGM) 中获取 MIDI 文件。
设置您的环境
确保您已安装 Python 3 和 pip。 在安装依赖项之前创建并激活虚拟环境至关重要:
pip install requests==2.22.0 beautifulsoup4==4.8.1
我们使用Beautiful Soup 4(Beautiful Soup 3不再维护)。
用请求和美丽的汤来抓取和解析
首先,让我们获取 HTML 并创建一个 BeautifulSoup 对象:
import requests from bs4 import BeautifulSoup vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/' html_text = requests.get(vgm_url).text soup = BeautifulSoup(html_text, 'html.parser')
soup
对象允许 HTML 导航。 soup.title
给出页面标题; print(soup.get_text())
显示所有文本。
掌握美汤的力量
find()
和 find_all()
方法是必不可少的。 soup.find()
定位单个元素(例如,soup.find(id='banner_ad').text
获取横幅广告文字)。 soup.find_all()
迭代多个元素。 例如,这会打印所有超链接 URL:
for link in soup.find_all('a'): print(link.get('href'))
find_all()
接受正则表达式或标签属性等参数以进行精确过滤。 有关高级功能,请参阅 Beautiful Soup 文档。
导航和解析 HTML
在编写解析代码之前,请检查浏览器渲染的 HTML。 每个网页都是独一无二的;数据提取通常需要创造力和实验。
我们的目标是下载独特的 MIDI 文件,不包括重复文件和混音文件。浏览器开发工具(右键单击“检查”)可帮助识别 HTML 元素以进行编程访问。
让我们使用 find_all()
和正则表达式来过滤包含 MIDI 文件的链接(不包括名称中带括号的链接):
创建nes_midi_scraper.py
:
import re import requests from bs4 import BeautifulSoup vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/' html_text = requests.get(vgm_url).text soup = BeautifulSoup(html_text, 'html.parser') if __name__ == '__main__': attrs = {'href': re.compile(r'\.mid$')} tracks = soup.find_all('a', attrs=attrs, string=re.compile(r'^((?!\().)*$')) count = 0 for track in tracks: print(track) count += 1 print(len(tracks))
这会过滤 MIDI 文件、打印其链接标签并显示总数。 与python nes_midi_scraper.py
一起奔跑。
下载 MIDI 文件
现在,让我们下载过滤后的 MIDI 文件。 将 download_track
函数添加到 nes_midi_scraper.py
:
pip install requests==2.22.0 beautifulsoup4==4.8.1
此功能下载每个曲目并使用唯一的文件名保存。从所需的保存目录运行脚本。 您应该下载大约 2230 个 MIDI 文件(取决于网站当前的内容)。
探索网络的潜力
网络抓取为海量数据集打开了大门。请记住,网页更改可能会破坏您的代码;保持脚本更新。 使用 Mido(用于 MIDI 数据处理)和 Magenta(用于神经网络训练)等库来构建此基础。
以上是使用 Beautiful Soup 在 Python 中进行网页抓取和解析 HTML的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。
