上一次的爬取网易新闻案例,我们使用到了一个解析 HTML 的库:Beautiful Soup。本次跟大家分享一下关于这个库的一些用法。

Beautiful Soup 简介:

Beautiful Soup 是一个可以从 HTML 或者 XML 文档中提取数据的 Python 库,

它提供一些简单的函数可以很方便的从文档上提取所需要的数据。由于目前最新版本是 4.4.0,所以一般被简称为 bs4。

安装:

在这里强烈推荐使用 Anaconda,Anaconda指的是一个开源的 Python 发行版本,包含了科学计算或者数据分析所用的等180多种依赖包。而且 window 下面的安装也是非常简便,一路下一步就行了。

至于为什么推荐使用 Anaconda,一方面是由于以上所说的包含了常用的库,而另一方面则是为了不让大家在安装环境这一步浪费太多时间。由于 Python 目前常用的依赖管理是 pip,新手很容易在这里遇到一些自身不容易解决的问题。很容易打击自己的信心,造成负面的心理反馈。而我们要使用的 Beautiful Soup 本身也已经集成到 Anaconda 中了。我们只需 import 导入即可。

废话不多说了,下面开始介绍 bs4 的使用。

开始使用之前,先介绍一下 bs4 可以使用的解析器。

bs4 支持 Python 标准库中的 HTML 解析器,另外还支持一些第三方的解析器:其中一个是 lxml,另一个可供选择的解析器是纯Python实现的 html5lib, html5lib的解析方式与浏览器相同。html5lib 相比较 lxml 来说容错能力更强,且不依赖外部扩展,但是速度却不如后者。lxml 还需要安装C语言库。不过我们使用的是 Anaconda,这些都是现成的,开箱即用。

bs4 导入:

frombs4 importBeautifulSoup

BeautifulSoup 的构造方法接收一段字符串或一个文件句柄,从而得到一个文档的对象。可以通过这个对象来对我们传入的文档来进行操作。

接收字符串:

str = """

bs4使用

BS4使用。

"""bs4 = BeautifulSoup(str, "lxml")print(type(bs4)) #

接收文件句柄:

bs4 = BeautifulSoup(open('a.html', mode='r', encoding='UTF-8'), "lxml")print(type(bs4)) #

Beautiful Soup 将 HTML 文档转换成一个复杂的树形结构,每个节点都是 Python 对象,所有对象可以归纳为4种: Tag, NavigableString, BeautifulSoup, Comment

一、Tag对象

Tag 其实就是 HTML 中的一个标签,与原生 HTML 文档中的标签相同。下面是示例:

str = """

Hello BeautifulSoup

"""soup = BeautifulSoup(str, "lxml")tag = soup.h1print(type(tag)) #

我们构造一个 BeautifulSoup 对象之后可以直接通过访问对象属性的方式来获取一个 Tag 对象,Tag 对象具有很多属性和方法。可包含多个Tag以及字符串,这些都是这个Tag的子节点。我们只介绍一下 Tag 中最重要的属性: name 和attributes

Name属性:

还是上边的例子,我们修改 tag 的 name 属性,之后打印它,发现原来的 h1 标签被修改为 h2,也就是说如果改变了 tag 对象的 name 属性,那将影响所有通过当前 Beautiful Soup 对象生成的 HTML 文档。

print(tag.name) # h1tag.name = "h2"print(tag) #

Hello BeautifulSoup

Attributes属性:

还是上边的例子,

Hello BeautifulSoup

这个标签含有一个 class 属性,值为“h1”。

tag 的属性可以被添加,删除或修改,操作方法与字典一样。

print(tag) #

Hello BeautifulSoup

tag['class'] = "h2"print(tag) #

Hello BeautifulSoup

二、NavigableString对象

上面例子中 h1 标签中间的字符串,可以通过 tag.string 来获取。通过上面的 Tag 对象获取到标签的内容之后可以通过 .string 获取。前提是 tag 只有一个 NavigableString 类型子节点。

print(type(tag.string)) # print(tag.string) # Hello BeautifulSoup

tag 中包含的字符串不能编辑,但是可以被替换。

tag.string.replace_with("AAAAA")print(tag.string) # AAAAA

三、BeautifulSoup对象

BeautifulSoup 对象表示的是一个文档的全部内容。很多时候可以把它当作一个特殊的 Tag 对象。

四、Comment对象

Tag, NavigableString, BeautifulSoup 几乎覆盖了 html 和 xml 中的所有内容,但是还有一些特殊对象,比如文档注释。

例子:

str = """Hello BeautifulSoup"""soup = BeautifulSoup(str, "lxml")comment = soup.b.stringprint(type(comment)) # print(comment) # 这里是注释

到这里已经介绍完了对象的种类。BeautifulSoup 还有最重要的部分:文档树。打算下次在写。

关注作者查看更多哦!

python beautifulsoup_Python爬虫利器:Beautiful Soup的使用(一)相关推荐

  1. Python 爬虫利器 Beautiful Soup 4 之文档树的搜索

    前面两篇介绍的是 Beautiful Soup 4 的基本对象类型和文档树的遍历, 本篇介绍 Beautiful Soup 4 的文档搜索 搜索文档树主要使用两个方法 find() 和 find_al ...

  2. python——爬虫学习——Beautiful Soup库的使用-(2)

    Beautiful Soup库 执行pip install beautifulsoup4安装Beautiful Soup库 Beautiful Soup库的简介 Beautiful Soup是一个可以 ...

  3. 可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据

    可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据 使用 Python 工具简化 Web 站点数据的提取和组织 David Mertz, Ph. ...

  4. python与网页交互_可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据

    可爱的 Python 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据 使用 Python 工具简化 Web 站点数据的提取和组织 David Mertz 2010 ...

  5. Python 爬虫之 Beautiful Soup 模块使用指南

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bruce_6/article/deta ...

  6. 【Python爬虫】Beautiful Soup库入门

    BeautifulSoup库的安装 安装 pip install beautifulsoup4 测试是否安装成功 Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2 ...

  7. python爬虫之Beautiful Soup库,基本使用以及提取页面信息

    一.Beautiful Soup简介 爬虫正则表达式参考:Python 爬虫正则表达式和re库 在爬虫过程中,可以利用正则表达式去提取信息,但是有些人觉得比较麻烦.因为花大量时间分析正则表达式.这时候 ...

  8. Python爬虫库-Beautiful Soup的使用

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库,简单来说,它能将HTML的标签文件解析成树形结构,然后方便地获取到指定标签的对应属性. 如在上一篇文章通过爬虫 ...

  9. python爬虫bs4库_04 Python爬虫之Beautiful Soup库

    Beautiful Soup库的安装 Win平台: 以管理员身份运行 cmd 执行 pip install beautifulsoup4 Beautiful Soup库的安装小测 首先,获取网页源码保 ...

最新文章

  1. [转载]TFS测试管理
  2. Java中集合 练习 计算疯狂值
  3. WSDM 2022 | 基于元学习的多场景多任务商家建模
  4. java 文件流 重写_java中关于文件流的总结
  5. 旧式计算机英语,旧式的英文怎么说
  6. GO学习第三天——自定义包
  7. mac securecrt程序无响应_Adobe庆祝Photoshop问世30周年 为Mac和iPad版本提供新功能
  8. java spring 事务传播_深入理解Spring的事务传播行为
  9. 【手写数字识别】基于matlab RBF手写数字识别【含Matlab源码 471期】
  10. 打造全能网管——网吧常用工具软件介绍
  11. 强化学习实战——Q learning 实现倒立摆
  12. Nb iot php_nb-lot技术的特点是什么?
  13. visio怎么画球_cad怎么画装配图
  14. 多台路由器连接,实现全网可达
  15. Rational Rose神器 (画图)
  16. 数据库设计三大范式原则
  17. python音乐的数据抓取与分析_python抓取网易云音乐热评做词图数据分析
  18. 在编程语言中提到的“字面量”是什么意思啊?
  19. qq音乐登录页面的html代码,musicQQ音乐协议登录源码
  20. VR头盔(眼镜)光学原理解析

热门文章

  1. 2018渭源县计算机老师,2018年甘肃定西渭源县选调教师公告【招60人】
  2. php 同步退出,phpcms phpsso不能同步退出怎么办
  3. Python:完整的语法规范
  4. TensorFlow:曼德布洛特(Mandelbrot)集合
  5. HTTPS详解SSL/TLS
  6. 拥抱.NET Core,如何开发一个跨平台类库 (1)
  7. 如何查看mysql数据库的引擎/MySQL数据库引擎详解
  8. nyoj35 表达式求值
  9. android 动态添加listview,动态向listView Android添加元素
  10. 微信分身版电脑版_电脑版营销wetool电脑版-网站