Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释


Posted in Python onJanuary 25, 2020

一、Tag(标签)对象

1.Tag对象与XML或HTML原生文档中的tag相同。

from bs4 import BeautifulSoup
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>','lxml')
tag = soup.b
type(tag)
bs4.element.Tag

2.Tag的Name属性

每个tag都有自己的名字,通过.name来获取

tag.name
'b'
tag.name = "blockquote" # 对原始文档进行修改
tag
<blockquote class="boldest">Extremely bold</blockquote>

3.Tag的Attributes属性

获取单个属性

tag['class']
['boldest']

按字典的方式获取全部属性

tag.attrs
{'class': ['boldest']}

添加属性

tag['class'] = 'verybold'
tag['id'] = 1
print(tag)
<blockquote class="verybold" id="1">Extremely bold</blockquote>

删除属性

del tag['class']
del tag['id']
tag
<blockquote>Extremely bold</blockquote>

4.Tag的多值属性

多值属性会返回一个列表

css_soup = BeautifulSoup('<p class="body strikeout"></p>','lxml')
print(css_soup.p['class'])
['body', 'strikeout']
rel_soup = BeautifulSoup('<p>Back to the <a rel="index">homepage</a></p>','lxml')
print(rel_soup.a['rel'])
rel_soup.a['rel'] = ['index', 'contents']
print(rel_soup.p)
['index']
<p>Back to the <a rel="index contents">homepage</a></p>

如果转换的文档是XML格式,那么tag中不包含多值属性

xml_soup = BeautifulSoup('<p class="body strikeout"></p>', 'xml')
xml_soup.p['class']
'body strikeout'

二、可遍历字符串(NavigableString)

1.字符串常被包含在tag内,使用NavigableString类来包装tag中的字符串

from bs4 import BeautifulSoup
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>','lxml')
tag = soup.b
print(tag.string)
print(type(tag.string))
Extremely bold
<class 'bs4.element.NavigableString'>

2.一个 NavigableString 字符串与Python中的str字符串相同,通过str() 方法可以直接将 NavigableString 对象转换成str字符串

unicode_string = str(tag.string)
print(unicode_string)
print(type(unicode_string))
Extremely bold
<class 'str'>

3.tag中包含的字符串不能编辑,但是可以被替换成其它的字符串,用 replace_with() 方法

tag.string.replace_with("No longer bold")
tag

<b class="boldest">No longer bold</b>

三、BeautifulSoup对象 BeautifulSoup 对象表示的是一个文档的全部内容。

大部分时候,可以把它当作 Tag 对象,它支持 遍历文档树 和 搜索文档树 中描述的大部分的方法。

四、注释与特殊字符串(Comment)对象

markup = "<b><!--Hey, buddy. Want to buy a used parser?--></b>"
soup = BeautifulSoup(markup,'lxml')
comment = soup.b.string
type(comment)
bs4.element.Comment

Comment 对象是一个特殊类型的 NavigableString 对象

comment
'Hey, buddy. Want to buy a used parser?'

更多关于Python爬虫库BeautifulSoup的使用方法请查看下面的相关链接

Python 相关文章推荐
详解Python3中字符串中的数字提取方法
Jan 14 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
基于python元祖与字典与集合的粗浅认识
Aug 23 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
python仿抖音表白神器
Apr 08 Python
如何使用Python实现自动化水军评论
Jun 26 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 #Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 #Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 #Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 #Python
flask框架自定义url转换器操作详解
Jan 25 #Python
常用python爬虫库介绍与简要说明
Jan 25 #Python
flask框架url与重定向操作实例详解
Jan 25 #Python
You might like
学习使用curl采集curl使用方法
2012/01/11 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
Python isinstance函数介绍
2015/04/14 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
python如何求解两数的最大公约数
2018/09/27 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
详解python中各种文件打开模式
2020/01/19 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
教师党员批评与自我批评发言稿
2014/10/15 职场文书
党员自我评价范文2015
2015/03/03 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL