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使用正则表达式分析网页中的图片并进行替换的方法
Mar 26 Python
python实现文件快照加密保护的方法
Jun 30 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
Python使用wxPython实现计算器
Jan 30 Python
python实现教务管理系统
Mar 12 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
python如何生成网页验证码
Jul 28 Python
破解安装Pycharm的方法
Oct 19 Python
Python中使用双下划线防止类属性被覆盖问题
Jun 27 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
python如何读取.mtx文件
Apr 22 Python
Python+Tkinter制作专属图形化界面
Apr 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
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
js Dialog 实践分享
2012/10/22 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
Python中的闭包总结
2014/09/18 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
django解决订单并发问题【推荐】
2019/07/31 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
采购部岗位职责
2013/11/24 职场文书
工作会议欢迎词
2014/01/16 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python