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之间的那些事
Jan 07 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
利用Python如何生成hash值示例详解
Dec 20 Python
详解python使用Nginx和uWSGI来运行Python应用
Jan 09 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
Python之循环结构
Jan 15 Python
详解Python字符串切片
May 20 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
解决springboot yml配置 logging.level 报错问题
Feb 21 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
Python如何用re模块实现简易tokenizer
May 02 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的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
Node.js的特点详解
2017/02/03 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
python冒泡排序算法的实现代码
2013/11/21 Python
Python算法应用实战之队列详解
2017/02/04 Python
python用requests实现http请求代码实例
2019/10/31 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
迟到检讨书500字
2014/02/05 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
给老师的感谢信
2015/01/20 职场文书
九年级语文教学反思
2016/03/03 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
Redis入门教程详解
2021/08/30 Redis
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js