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 相关文章推荐
在Python的Flask框架下收发电子邮件的教程
Apr 21 Python
详解Python多线程
Nov 14 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
Django之无名分组和有名分组的实现
Apr 16 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
python有几个版本
Jun 17 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
深入浅析Python代码规范性检测
Jul 31 Python
Python基础详解之描述符
Apr 28 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 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
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
twig里使用js变量的方法
2016/02/05 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
Python pandas常用函数详解
2018/02/07 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
2014新年寄语
2014/01/20 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
2015年教师节活动总结
2015/03/20 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
详解Python函数print用法
2021/06/18 Python
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫