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缩进区别分析
Feb 15 Python
python通过scapy获取局域网所有主机mac地址示例
May 04 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 Python
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
详解django中自定义标签和过滤器
Jul 03 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
Python 实现字符串中指定位置插入一个字符
May 02 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
利用python在大量数据文件下删除某一行的例子
Aug 21 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
php 之 没有mysql支持时的替代方案
2006/10/09 PHP
windows xp下安装pear
2006/12/02 PHP
php多文件上传实现代码
2014/02/20 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
浅谈使用nodejs搭建web服务器的过程
2020/07/20 NodeJs
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python 中 Meta Classes详解
2016/02/13 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
tensorflow识别自己手写数字
2018/03/14 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
Java软件工程师综合面试题笔试题
2013/09/08 面试题
花店创业计划书范文
2014/02/07 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
起诉状范本
2015/05/20 职场文书
2015初中团委工作总结
2015/07/28 职场文书
公司年会主持词范文!
2019/05/07 职场文书