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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
python3中set(集合)的语法总结分享
Mar 24 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
python selenium自动上传有赞单号的操作方法
Jul 05 Python
python for和else语句趣谈
Jul 02 Python
大数据分析用java还是Python
Jul 06 Python
Python读写压缩文件的方法
Jul 30 Python
Python多分支if语句的使用
Sep 03 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
全面介绍python中很常用的单元测试框架unitest
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和ACCESS写聊天室(十)
2006/10/09 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
php实例化一个类的具体方法
2019/09/19 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
DOM精简教程
2006/10/03 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
python 排列组合之itertools
2013/03/20 Python
Python中的ctime()方法使用教程
2015/05/22 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
英国鞋网:Rubber Sole
2020/03/03 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
竞争上岗演讲稿
2014/01/05 职场文书
财产公证书
2014/04/10 职场文书
离婚协议书范本样本
2014/08/19 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang