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多线程操作实例
Nov 21 Python
详解python进行mp3格式判断
Dec 23 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
使用Template格式化Python字符串的方法
Jan 22 Python
在VS2017中用C#调用python脚本的实现
Jul 31 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
logging level级别介绍
Feb 21 Python
Python中socket网络通信是干嘛的
May 27 Python
Java多线程实现四种方式原理详解
Jun 02 Python
python定义类的简单用法
Jul 24 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
方法汇总:Python 安装第三方库常用
Apr 26 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正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
php封装的验证码类分享
2017/02/26 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
使用graphics.py实现2048小游戏
2015/03/10 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python实现动态循环输出文字功能
2020/05/07 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
一套C#面试题
2013/10/09 面试题
计算机大学生的自我评价
2013/10/15 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
班训口号大全
2014/06/18 职场文书
四大名著读书笔记
2015/06/25 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
实战Python爬虫爬取酷我音乐
2022/04/11 Python