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程序中使用SQLAlchemy时出现乱码的解决方案
Apr 24 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
Python 记录日志的灵活性和可配置性介绍
Feb 27 Python
python中scikit-learn机器代码实例
Aug 05 Python
Python 单元测试(unittest)的使用小结
Nov 14 Python
numpy下的flatten()函数用法详解
May 27 Python
画pytorch模型图,以及参数计算的方法
Aug 17 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
Python正则表达式学习小例子
Mar 03 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
Python如何输出警告信息
Jul 30 Python
在 Python 中使用 MQTT的方法
Aug 18 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
第十五节--Zend引擎的发展
2006/11/16 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
Python列表(List)知识点总结
2019/02/18 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
小学综治宣传月活动总结
2014/07/02 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
python 中[0]*2与0*2的区别说明
2021/05/10 Python
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js