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算法之栈(stack)的实现
Aug 18 Python
python进阶教程之函数参数的多种传递方法
Aug 30 Python
python操作 hbase 数据的方法
Dec 18 Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
Python 读写文件的操作代码
Sep 20 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 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中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
Django admin美化插件suit使用示例
2017/12/12 Python
python实现log日志的示例代码
2018/04/28 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
详解python中的模块及包导入
2019/08/30 Python
python ubplot使用方法解析
2020/01/10 Python
python音频处理的示例详解
2020/12/23 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
英语教师求职信
2014/06/16 职场文书
2014年团工作总结
2014/11/27 职场文书
优秀教师先进材料
2014/12/16 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
运动会运动员赞词
2015/07/22 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery