点击上方蓝字关注"程序员Bob"呀~

每个人的生命都是通向自我的征途,是对一条道路的尝试,是一条小径的悄然召唤。人们从来都无法以绝对的自我之相存在,每一个人都在努力变成绝对自我,有人迟钝,有人更洞明,但无一不是自己的方式。人人都背负着诞生之时的残余,背负着来自原初世界的黏液和蛋壳,直到生命的终点。

-《德米安 彷徨少年时》

之前了解过Requests库的用法,在Python爬虫中,用到

BeautifulSoup4

库的技术路线为Requests库+BeautifulSoup4库+re库,这里小编准备先聊聊Beautiful Soup4库。

至于为什么这个库要叫BeautifulSoup库(中文翻译为美丽的汤

),实在是令人百思不得其解,虽然小编知道它是由一个美丽的童话故事而来,但小编就是不说

。去官网就知道啦~(如下)

https://www.crummy.com/software/BeautifulSoup/

1.BeautifulSoup4库的功能

在官网对

BeautifulSoup4的简单介绍为:

Beautiful Soup提供了一些用于导航,搜索和修改解析树的简单方法和Pythonic习惯用法:用于剖析文档并提取所需内容的工具箱。编写应用程序不需要很多代码。

Beautiful Soup会自动将传入文档转换为Unicode,将传出文档转换为UTF-8。您不必考虑编码,除非文档未指定编码并且Beautiful Soup无法检测到编码。然后,您只需要指定原始编码即可。

Beautiful Soup位于流行的Python解析器(如lxml和html5lib)的顶部,使您可以尝试不同的解析策略或提高灵活性。

至于为什么后面有个4(代表版本号),因为BeautifulSoup3项目已停止开发,BeautifulSoup4也已被纳入到bs4里面了,所以在引用该库时需要使用:

from bs4 import BeautifulSoup

2.Beautiful Soup4库的安装

打开cmd命令行窗口,输入:pip install beautifulsoup4

编写一个小小的项目检查BeautifulSoup库是否安装成功:

import requestsfrom bs4 import BeautifulSoupr=requests.get("https://python123.io/ws/demo.html")print(r.text)demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup.prettify())

输出如下(截取部分):

能正确输出即安装成功。

3.BeautifulSoup库的简单使用

有兴趣的小伙伴可以先试试运行下面的这段代码(建议输出语句逐条运行):

import requestsfrom bs4 import BeautifulSoupr=requests.get("https://python123.io/ws/demo.html")#print(r.text)demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup.prettify())print(soup.title)tag=soup.aprint(tag)print(soup.a.name)print(soup.a.parent.name)print(soup.a.parent.parent.name)print(tag.attrs)print(tag.attrs['class'])print(tag.attrs['href'])print(type(tag.attrs))print(type(tag))print(soup.a.string)print(soup.p.string)print(type(soup.p.string))

大家可以根据输出内容来判断其作用,实际上挺容易的。

首先是库的引用:

beautiful Soup 库:也叫beautifulsoup4或bs4

引用格式:from bs4 import BeautifulSoup#切记B和S要大写 ,

也可以直接用import bs4

引用之后的下面这条语句:

soup=BeautifulSoup(demo,"html.parser")

其中,

html.parser

是一个html的解释器(解析前面demo里面的内容)。

那么什么是解释器呢?

百度:解释器,又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它每转译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停地进行下去。

大概意思和编译器差不多,相关知识请自行百度。

关于BeautifulSoup库相关的解释器:

bs4的HTML解释器 BeautifulSoup(mk,'html.parser')  需安装bs4库

lxml的HTML解释器 BeautifulSoup(mk,'lxml')  安装命令:pip install lxml

lxml的XML解释器 BeautifulSoup(mk,'xml')  安装命令:pip install lxml

html5lib的解释器 BeautifulSoup(mk,'html5lib')  安装命令:pip install html5lib

其它语句就要知道BeautifulSoup类的基本元素:

Tag:标签,最基本的信息组织单元,分别用<>和>标明开头和结尾。

Name:标签的名字,

..

的名字是'p',格式:.name。

Attributes:标签的属性,字典形式组织 格式::.attrs。

Navigable String:标签的非属性字符串,<>...>中字符串,格式:.string。

Comment:标签内字符串的注释部分,一种特殊的comment类型。

4.标签树的遍历:

标签树的下行遍历

相关属性及其说明(下同):

.content  子节点的列表,将所有儿子节点存入列表

.children   子节点的迭代类型,与.content类似,用于循环儿子结点

.descendants  子孙节点的迭代类型,包含所有子孙结点,用于循环遍历

实例:

import requestsfrom bs4 import BeautifulSoupr=requests.get("https://python123.io/ws/demo.html")#print(r.text)demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup.head)print(soup.head.contents)print(soup.body.contents)print(len(soup.body.contents))print(soup.body.contents[1])

标签树的下行遍历:

for child in soup.body.children:print(child)

标签树的上行遍历:

.parent :节点的父亲标签

.parents 节点先辈标签的迭代类型,用于循环遍历先辈节点

实例:

import requestsfrom bs4 import BeautifulSoupr=requests.get("https://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")for parent in soup.a.parents:if parent is None:print(parent)else:print(parent.name)

标签树的平行遍历:

.next.sibling 返回HTML文本顺序的下一个平行节点标签

.previous_sibling 返回按照HTML文本顺序的上一个平行节点

.next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签

.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

实例:

import requestsfrom bs4 import BeautifulSoupr=requests.get("https://python123.io/ws/demo.html")#print(r.text)demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup.a.next_sibling)#下一个标签print(soup.a.next_sibling.next_sibling)print(soup.a.previous_sibling)print(soup.a.previous_sibling.previous_sibling)print(soup.a.parent)#遍历后续节点for sibling in soup.a.next_siblings:print(sibling)#遍历前续节点for sibling in soup.a.previous_siblings:print(sibling)

To:bs4将任何读入的HTML文件或字符串都转换成utf-8编码。

Python爬虫系列,未完待续...

为你,千千万万遍.

往期推荐:

一键三连,就差你了

python beautifulsoup库_Python爬虫系列:BeautifulSoup库详解相关推荐

  1. python bs4模块_python爬虫之Beautifulsoup模块用法详解

    什么是beautifulsoup: 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.(官方) beautifulsoup是 ...

  2. python版本回退_Python爬虫之BeautifulSoup解析之路

    上一篇分享了正则表达式的使用,相信大家对正则也已经有了一定的了解.它可以针对任意字符串做任何的匹配并提取所需信息. 但是我们爬虫基本上解析的都是html或者xml结构的内容,而非任意字符串.正则表达式 ...

  3. python协程库_python中协程的详解(附示例)

    本篇文章给大家带来的内容是关于python中协程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程,又称微线程,纤程.英文名Coroutine 协程看上去也是子程序 ...

  4. python读yaml的库_Python读取YAML文件过程详解

    这篇文章主要介绍了Python读取YAML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python读取方法: import yaml ...

  5. python 两点曲线_Python自学教程| 3万字详解每个重要知识点(内附视频)

    本文目录: 什么是Python? Python的用途是什么? 如何安装Python? 为什么选择Python? R与Python 学习Python的最佳方法 什么是顶级Python IDE 哪个是最适 ...

  6. python text函数_python可视化text()函数使用详解

    python可视化text()函数使用详解 这篇文章主要介绍了python可视化text()函数使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 ...

  7. python flask安装_python flask安装和命令详解

    Flask Web开发实战学习笔记 Flask简介 Flask是使用Python编写的Web微框架.Web框架可以让我们不用关 心底层的请求响应处理,更方便高效地编写Web程序.因为Flask核心简 ...

  8. python单例模式解析_Python下简易的单例模式详解

    Python 下的单例模式 要点: 1.某个类只能有一个实例: 2.它必须自行创建这个实例: 3.它必须自行向整个系统提供这个实例 方法:重写new函数 应该考虑的情况: 1.这个单例的类可能继承了别 ...

  9. python清空集合_python集合删除多种方法详解

    这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 删除指定的元素 A={'a','c','b','d ...

最新文章

  1. sql serve基础
  2. WPF RichTextBox的Document属性的序列化与反序列化
  3. SQLite 被曝存在漏洞,数千应用受影响
  4. linux tomcat 进程杀掉_Linux下tomcat的配置踩坑
  5. 【好】Paxos以及分布式一致性的学习
  6. latex table 表格 显示每行横线
  7. 求职被问“你还有什么问题要问吗?”该怎么办?
  8. win10 cmd切换目录
  9. fflush(stdout)
  10. JAVA后端如何保证业务操作的幂等性
  11. PR2018模板|手机竖屏图文视频制作剪辑素材/抖音,快手等短视频创作模板
  12. 【C语言入门】笔记八 (数组中)
  13. 使用 Prometheus-Operator 监控 Calico
  14. 光说面试难,9张思维导图,总结Java面试核心知识点,你是否也复习到这样
  15. 基于AI排序算法的指数增强策略
  16. 网页文档下载不了怎么办 亲测可用!建议收藏!
  17. 数据库事务隔离标准分析
  18. python绘制太阳系模型_用python做一个漂亮的太阳系运动模拟
  19. 计算机学报杂志官网在线出版,计算机学报
  20. 【Codewars】<7kyu> Vowel Count

热门文章

  1. 使用PyMuPdf提取、删除及替换PDF中的图片文件
  2. java 新浪短链接_新浪短链接/腾讯短链接的API接口分享(含调用代码)
  3. 死磕GC:Java GC 和 GO GC 大对比,看完秒成高高手
  4. java 中使用excl与设置单元格格式
  5. 自学编程C语言不迷路,我私藏的书单分享给你!
  6. 计算机中原码反码补码的应用场合,反码
  7. 写给这批≥30岁的测试工程师
  8. 软银孙正义:未来十年押注移动互联网
  9. Nginx Ingress Controller 部署
  10. 普通用户的计算机接入运营商,运营商应对互联网P2P应用的策略-通信/网络-与非网...