python爬虫学习30

python爬虫学习30

六、Beautiful Soup 的使用

之前我们学过了 lxml库,今天我们一同学习Beautiful Soup库的使用

6-1 Beautiful Soup 简介

Beautiful Soup 是Python的一个HTML或XML的解析库,我们可以用它方便的从网页中提取数据。

它提供了一些简单的、python式的函数来处理导航、搜索、修改分析树等功能。beautiful soup自动将输入文档转换为Unicode编码,将输出文档转化为utf-8编码。

这时我们就不需要考虑编码的方式,只需要说明一下原始编码即可。

与lxml库一样,beautiful soup都是用来解析网页的python解释器。

6-2 解析器

beautiful soup 在解析时需要依靠解析器,他除了支持python标准库的HTML解析器,还支持一些第三方解析器(如lxml)。
在这里插入图片描述

使用前先进行安装:

pip3 install beautifulsoup4

下载的时候可能会超时,多试几次或者干脆挂个镜像

安装完成后,使用 bs4调用lxml解析器

扫描二维码关注公众号,回复: 13792598 查看本文章
# 解析器的调用
from bs4 import BeautifulSoup

soup = BeautifulSoup('<p>Hellow python</p>', 'lxml')
print(soup.p.string)

运行结果:

在这里插入图片描述

6-3 基本使用

from bs4 import BeautifulSoup

html = """
<title>一段html文本</title>
<div class="nav">
			<ul>
				<li><a href="https://www.qbiqu.com/">首页</a></li>
                <li><a href="/modules/article/bookcase.php">我的书架</a></li>
				<li><a href="/xuanhuanxiaoshuo/">玄幻小说</a></li>
				<li><a href="/xiuzhenxiaoshuo/">修真小说</a></li>
				<li><a href="/dushixiaoshuo/">都市小说</a></li>
				<li><a href="/chuanyuexiaoshuo/">穿越小说</a></li>
				<li><a href="/wangyouxiaoshuo/">网游小说</a></li>
				<li><a href="/kehuanxiaoshuo/">科幻小说</a></li>
				<li><a href="/paihangbang/">排行榜单</a></li>
				<li><a href="/wanben/1_1">完本小说</a></li>
				<li><a href="/xiaoshuodaquan/">全部小说</a></li>
                <li><script type="text/javascript">yuedu();</script></li>
			</ul>
		</div>
        <div id="banner" style="display:none"></div>
		<div class="dahengfu"><script type="text/javascript">list1();</script></div>
"""
# 调用 lxml 解析器
soup = BeautifulSoup(html, 'lxml')
# 标准化html中的HTML文本
print(soup.prettify())
# 获取 title 节点中的字符串
print(soup.title.string)

运行结果:

对于输出后的html文本
可以看到html、head等节点被自动补全了
在这里插入图片描述

对于我们获取的字符串:

在这里插入图片描述

6-4 节点选择器

使用节点选择器进行节点选择:

# 节点选择器

from bs4 import BeautifulSoup

html = """
<title>一段html文本</title>
<div class="nav">
			<ul>
				<li><a href="https://www.qbiqu.com/">首页</a></li>
                <li><a href="/modules/article/bookcase.php">我的书架</a></li>
				<li><a href="/xuanhuanxiaoshuo/">玄幻小说</a></li>
				<li><a href="/xiuzhenxiaoshuo/">修真小说</a></li>
				<li><a href="/dushixiaoshuo/">都市小说</a></li>
				<li><a href="/chuanyuexiaoshuo/">穿越小说</a></li>
				<li><a href="/wangyouxiaoshuo/">网游小说</a></li>
				<li><a href="/kehuanxiaoshuo/">科幻小说</a></li>
				<li><a href="/paihangbang/">排行榜单</a></li>
				<li><a href="/wanben/1_1">完本小说</a></li>
				<li><a href="/xiaoshuodaquan/">全部小说</a></li>
                <li><script type="text/javascript">yuedu();</script></li>
			</ul>
		</div>
        <div id="banner" style="display:none"></div>
		<div class="dahengfu"><script type="text/javascript">list1();</script></div>
"""
soup = BeautifulSoup(html, 'lxml')
# 选取title节点
print(soup.title)
# title节点属性
# 返回的结果是 bs4.element.Tag class
print(type(soup.title))
# 获取 title 节点中的字符串
print(soup.title.string)
# 获取head节点
print(soup.head)
# 获取 p节点 可以看到结果没有则返回None
print(soup.p)

运行结果:

在这里插入图片描述
今日结束,未完待续…

猜你喜欢

转载自blog.csdn.net/szshiquan/article/details/124180016