BeautifulSoup4:一个实用的网页解析Python库

我是东哥,一个热衷于探索Python世界的自媒体人。今天,我要为大家介绍一个在Python网页数据提取领域中非常强大的库——BeautifulSoup4。如果你对如何从网页中提取数据感到好奇,或者正在寻找一个简单易用的库来抓取网页信息,那么BeautifulSoup4绝对是你的不二之选。

基本介绍

BeautifulSoup4是一个用于从网页抓取数据的Python库。它可以将HTML和XML文档转换成Python对象,从而让你更方便地提取和操作网页上的信息。无论你是要抓取新闻、产品信息,还是进行数据分析,BeautifulSoup4都能帮你轻松搞定。

项目文档主页:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
BeautifulSoup4主页

安装方法

安装BeautifulSoup4非常简单,只需要在你的命令行工具中输入以下命令:

pip install beautifulsoup4

同时,为了正常执行,你可能还需要一个解析器,比如lxmlhtml5lib,这里我们以lxml为例:

pip install lxml

BeautifulSoup4的基本用法

基本抓取:提取网页标题

让我们从一个简单的示例开始,展示如何使用BeautifulSoup4抓取一个网页的标题:

# 1.提取网页标题
import requests
from bs4 import BeautifulSoup

# 发送请求获取网页内容
url = 'https://www.eastmoney.com/'
response = requests.get(url)

# 使用BeautifulSoup4解析网页
soup = BeautifulSoup(response.content, 'lxml')

# 提取网页标题
title = soup.title.text
print(f'网页标题是:{title}')

输出:

网页标题是:东方财富网:财经门户,提供专业的财经、股票、行情、证券、基金、理财、银行、保险、信托、期货、黄金、股吧、博客等各类财经资讯及数据

基本搜索:查找所有链接

接下来,我们看看如何使用BeautifulSoup4查找网页中的所有链接:

# 查找所有的<a>标签
links = soup.find_all('a')

# 打印每个链接的href属性
for link in links:
    print(link.get('href'))

输出:

https://acttg.eastmoney.com/pub/web_app_dcsy_topcdl_01_01_01_0
http://js1.eastmoney.com/tg.aspx?ID=3121
https://acttg.eastmoney.com/pub/pe_px_rk_dcweb_01_01_01_0
https://acttg.eastmoney.com/pub/pe_px_rk_dcweb_01_01_02_0
https://zqhd.eastmoney.com/cp/cp20161013/index.html
...
http://about.eastmoney.com/home/links
http://acttg.eastmoney.com/pub/web_app_dcsy_top1_01_01_01_1
https://marketing.dfcfs.com/views/aghdhtml/activity3.html
http://acttg.eastmoney.com/pub/web_app_dcsy_top1_02_02_01_1
http://js1.eastmoney.com/tg.aspx?ID=3120

高级用法:BeautifulSoup4的进阶功能

高级搜索:使用CSS选择器

BeautifulSoup4允许我们使用CSS选择器来查找元素,这使得搜索更加灵活和强大:

# 使用CSS选择器找到类名为'news'的所有<div>元素
news_divs = soup.select('div.news')

# 遍历并打印这些<div>元素的文本内容
for div in news_divs:
    print(div.text)

输出:

大盘 固态电池产业化进程开启 个股人气榜单反弹次日就回调 沪指还跌出新低!A股发生了什么?尾盘大跌 原因找到!折叠屏概念股走高 保险股大涨A股新“魔咒”!中字头个股震荡走低 地产股下跌题材 A股上热搜!发生了什么?银行板块反弹盈利能力显著分化 创新医药龙头登顶毛利率榜首二季度私募大幅加仓 8月份私募调研次数暴增150%尾盘突变!酒类股大幅下挫 折叠屏概念热度不减个股 92日北向资金最新动向(附十大成交股)一天前刚辞职 广东知名药企一董事被曝被调查!企业并购重组提速!又有两单并购重组获证监会注册龙虎榜:7200万元抢筹冠昊生物 机构净买入1092日涨停复盘:折叠屏局部活跃 科森科技6连板


...


银行 |  六大国有银行上半年共赚近七千亿大跌后大涨!天津银行业绩过山车 净利润翻倍增长提前还贷冲击:19家大中型银行中14家房贷余额减少A股上市银行半年报扫描:投资收益成为利润增长点17家A股城商行业绩PK:业绩增速与零售分化
债券 |  央行启动国债买卖 四大看点寓意深远惨烈!百亿规模剩百万 债基也是“头部游戏”?万科:公开市场年内仅余一笔20亿元境内债待还信托 |  信托机构谨慎配置城投债私募产品涉嫌违规挪用信托财产 这家信托两位前高管领罚单银行间同业拆借利率 债市行情 可转债数据一览表

高级提取:提取表格数据

我们还可以使用BeautifulSoup4来提取网页中的表格数据:

# 找到<table>标签
tables = soup.find_all('table')

for table in tables:
    # 提取表格中的所有行
    rows = table.find_all('tr')
    # 找到第1个非空表格
    if len(rows) == 1:
        continue

    # 遍历每一行,提取单元格数据
    for row in rows:
        cells = row.find_all('td') or row.find_all('th')
        print([cell.text for cell in cells])
    break

输出:

['代码', '名称', '最新价', '5分钟涨跌']
['301178', '天亿马', '20.35', '2.52%']
['837174', '宏裕包材', '8.57', '2.51%']
['832469', '富恒新材', '6.51', '2.04%']

小结

BeautifulSoup4是一个功能强大的库,它简化了网页数据的提取过程,使得网络爬虫的开发变得简单易行。无论你是网络爬虫新手还是有经验的开发者,BeautifulSoup4都能成为你的得力助手。

希望这篇文章能让你对BeautifulSoup4有一个基本的了解,并激发你探索更多可能。如果你有任何问题或想要深入探讨BeautifulSoup4的其他功能,请随时留言。

公众号东哥说AI后台回复006获取文中完整代码~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东哥说AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值