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 25 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
python使用selenium实现批量文件下载
Mar 11 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
在Python中字符串、列表、元组、字典之间的相互转换
Nov 15 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 15 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
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
Smarty模板语法详解
2019/07/20 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
ie 调试javascript的工具
2009/04/29 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python实现在线音乐播放器
2017/03/03 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Python高并发和多线程有什么关系
2020/11/14 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
节约用水倡议书
2014/04/16 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技