首页 > 编程语言 >python模块之beautifulsoup —— html文件解析以及提取

python模块之beautifulsoup —— html文件解析以及提取

时间:2023-01-14 21:12:14浏览次数:63  
标签:lxml soup python 标签 beautifulsoup 对象 html 文本 属性

python模块之beautifulsoup —— html文件解析以及提取

beautifulsoup简称bs4,能够帮助我们处理html等超标记文本的标签,提取其中的文字,常用于爬虫领域等。

bs4及相关模块的安装

安装bs4

pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple/   # 清华源下载

安装lxml:

pip install lxml

lxml是一种编码格式,在python解释器中,一般都有默认的html编码器,但是效率较低,所以可以一并下载lxml。这些编码格式beautifulsoup解析文本时需要指定和使用。

导入bs4模块:

from bs4 import BeautifulSoup

bs4基础结构

汤对象和标签对象

创建汤对象soup = BeautifulSoup(html_content, 'lxml')

  • 第一个参数,超标记文本的文本数据

    这个参数可以是str字符串,也可以是open()函数

  • 第二个参数,lxml是编码解析器,还有默认的html解析器等。

汤对象拥有文本的数据属性,拥有DOM节点的定位筛选功能,筛选得到的对象我们将其认作标签对象。传入的内容,会自动将在外侧套html标签。

标签对象有一数据属性可以取到标签的类型、属性、文本等,还拥有一些方法可以判断标签是否有某种属性等,标签对象拥有__str__方法,这个对象显示时以标签原文本显示。

汤对象方法汇总

根据标签类型查找节点

soup是汤对象,汤对象点标签名可以得到文本中的第一个对应标签,这个标签对象可以点出一些属性。

soup = BeautifulSoup('<a href="#" class="c1" >一个链接</a><a>内容</a>', 'lxml')

soup.a   # 找到文本中的第一个a标签
--><a href="#" class="c1" >一个链接</a>

soup.a.name  # 拿到标签的名字
-->a

soup.a.attrs  # 拿到标签的所有属性和值对应的字典
-->{'href': '#', 'class': ['c1']}

find方法

特点是返回一个标签对象

soup.find('a')  # 找到第一个a标签,等同于soup.a
soup.find('a', class_='c1')   # 找到第一个类属性含c1的a标签

find_all方法

特点是返回一个标签对象列表,我们可以遍历列表得到标签对象逐个获得拿到标签数据。

soup = BeautifulSoup('<a href="#" class="c1" >一个链接</a><a>内容</a>', 'lxml')

soup.find_all('a')
--> [<a class="c1" href="#">一个链接</a>, <a>内容</a>]

select方法

可以按照css选择器来筛选标签,也意味着可以按照id选择、类选择器、属性选择器、组合选择器等方式筛选数据。而最终结果得到的是标签对象的列表。

soup = BeautifulSoup('<a href="#" class="c1" >一个链接</a><a href=''>内容</a>', 'lxml')

soup.select('[href="#"]')
--> [<a class="c1" href="#">一个链接</a>]

text属性

剔除所有标签,拼接所有文本数据

soup = BeautifulSoup('<a>aaa<u>hhh</u></a>', 'lxml')
soup.text
--> aaahhh

name属性

soup对象可以使用标签对象的大部分功能,但是其name属性由于不是具体的标签,所以被冠以特殊的标识[document]

标签对象方法汇总

属性、方法 含义 结果演示
.name 标签类型 a标签对象.name --> a
.attrs 标签属性字典 {'class': ['c1', 'c2'], 'href': '#'}
.text 标签内部文本 嵌套的标签也会剔除<标签>的内容,只保留文本
.string 内部文本的修改入口 tag.string = 'new'与text只读相对应

更多详情

以上内容是根据下文链接的文档简单总结而来:

bs4-官方文档

标签:lxml,soup,python,标签,beautifulsoup,对象,html,文本,属性
From: https://www.cnblogs.com/Leethon-lizhilog/p/17052546.html

相关文章

  • python 汉字转拼音 实例
    python汉字转拼音首先是安装第三方库:$pipinstallpinyin使用的话:>>>importpinyin>>>printpinyin.get('你好')nǐhǎo>>>printpinyin.get('你好',format="strip......
  • python批量发邮箱
    1.首先登录邮箱中开启服务2.获取到授权码后复制下来,放入如下含授权码的引号中: 1smtp_obj.login("**********@qq.com","授权码")#发送者的邮箱以及授权码(登陆邮箱......
  • Python之字典添加元素
    本文使用代码book_dict={"price":500,"bookName":"Python设计","weight":"250g"} 第一种方式:使用[]book_dict["owner"]="tyson" 说明:中括......
  • 如何用Python参加算法竞赛
    如何用Python参加算法竞赛前言本文适合有一定c++基础且初步了解Python,并想开发自己第二竞赛用语言的人群阅读。本文仅介绍Python3,更低版本Python请自行了解。Python的......
  • 【Python基础学习】2.基本图形绘制
    主要参考来源:慕课嵩天老师的“Python语言程序设计”[https://www.icourse163.org/course/BIT-268001?tid=1468130447]2.1深入理解Python语言计算机技术的演进:1946-19......
  • [oeasy]python0048_取整_int_float_浮点型_cast_扮演_tab_制表键_制表符
    转化为10进制回忆上次内容上次把其他进制转化回​​十进制​用的是int函数int来自于integer同源词还有integrateentire意思都是​​完整​​的​完整​​的和​......
  • python—web自动化(1)—元素定位方法的基本使用(添加商品,送货地址小案例)
    学习目的:掌握元素定位方法的使用案例需求:登录-添加商品-添加送货地址 网页元素:检查输入框页面元素,通过id进行定位,send_keys('输入内容')#输入账号密码#*......
  • [oeasy]python0048_取整_int_float_浮点型_cast_扮演_tab_制表键_制表符
    转化为10进制回忆上次内容上次把其他进制转化回十进制用的是int函数int来自于integer同源词还有integrateentire意思都是完整的完整的......
  • Python常用文件操作程序
    批量修该文件名。importos#导入模块filename='./2212144sep'#文件地址list_path=os.listdir(filename)#读取文件夹里面的名字st=#写入开始forindexin......
  • python中os.path常用属性和部分使用方法
    1os.path模块常用的属性和方法2简单示例在一个工程或者项目中用到的会多一点,比如需要得到某个文件或者配置文件的路径等。这里示例为:C:\Users\Administrator\Desk......