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 3.0 模拟用户登录功能并实现三次错误锁定
Nov 01 Python
Python同步遍历多个列表的示例
Feb 19 Python
PyQt打开保存对话框的方法和使用详解
Feb 27 Python
python hough变换检测直线的实现方法
Jul 12 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
python装饰器相当于函数的调用方式
Dec 27 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
什么是python类属性
Jun 10 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
numpy实现RNN原理实现
Mar 02 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
动易数据转成dedecms的php程序
2007/04/07 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
js简单时间比较的方法
2016/08/02 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
python中的多重继承实例讲解
2014/09/28 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
python编写计算器功能
2019/10/25 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
渡河少年教学反思
2014/02/12 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
Python中可变和不可变对象的深入讲解
2021/08/02 Python
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python
基于Python实现射击小游戏的制作
2022/04/06 Python