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脚本实现查找webshell的方法
Jul 31 Python
用Python编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
Django的models中on_delete参数详解
Jul 16 Python
python3.6编写的单元测试示例
Aug 17 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
关于sys.stdout和print的区别详解
Dec 05 Python
pytorch之ImageFolder使用详解
Jan 06 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
python实现感知机模型的示例
Sep 30 Python
教你怎么用Python生成九宫格照片
May 20 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 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的安全策略
2006/10/09 PHP
php常见的魔术方法详解
2014/12/25 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
Python函数式编程实例详解
2020/01/17 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
恒华伟业笔试面试题
2015/02/26 面试题
中文专业毕业生自荐信
2013/10/28 职场文书
资料员岗位职责
2013/11/17 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
庆祝儿童节标语
2014/10/09 职场文书
校长一岗双责责任书
2015/05/09 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android