博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Python]BeautifulSoup—HTML解析包
阅读量:6272 次
发布时间:2019-06-22

本文共 1374 字,大约阅读时间需要 4 分钟。

在用Python写爬虫时,一个常见的操作是对抓下的HTML做分析处理,得到想要的内容。一般的方法为使用Python的re库中。用正則表達式来解析文本。只是这样的方法适用于全部的文本。而针对于特定格式的文本,如这里的HTML。BeautifulSoup更具有针对性,使用起来也更方便。

BeautifulSoup能够解析HTML。XML等文件,这里仅仅说明其解析HTML的功能。

 

BeautifulSoup(下面简称BS)的官方网站为:

 

BS把HTML看做一个树形,以标签和文本为基本类型,一个标签包括其它标签。被解析为一个标签是还有一个标签的子树。那么。终于整个HTML文档被解析为一棵树的形式。

BS包含四种基本类型:

Soup(树),Tag(标签节点),String(字符节点),Comment(凝视节点)。

例如以下图:

这四种类型的节点构成树,Soup代表这颗树。String为叶子节点,tag为标签子节点,为其标签包括的全部内容。

建树

import bs4#导入BeautifulSoup库

Soup = BeautifulSoup(html)#当中html 能够是字符串。也能够是句柄

须要注意的是,BeautifulSoup会自己主动检測传入文件的编码格式,然后转化为Unicode格式

通过如上两句话。BS自己主动把文档生成为如上图中的解析树。

 

节点属性

能够通过Tag.attrs訪问,返回字典结构的属性。

或者Tag.name这样訪问特定属性值,假设是多值属性则以列表形式返回。

 

遍历

子节点:

Tag.Tag_child1:直接通过下标名称訪问子节点。

Tag.contents:以列表形式返回全部子节点。

Tag.children:生成器,可用于循环訪问:for child in Tag.children

 

String 子节点:

Tag.String:Tag仅仅有一个String子节点是,能够这么訪问,否则返回None

Tag.Strings:生成器。可用于循环訪问:for str in Tag.Strings

 

子孙节点:

Tag.descendants:生成器,可用于循环訪问:for des inTag.descendants

 

父节点:

Tag.parent:父节点

Tag.parents:父到根的全部节点

 

兄弟节点:

Tag.next_sibling

Tag.next_siblings

Tag.previous_sibling

Tag.previous_siblings

查找

最经常使用的是find_all()函数

方法搜索当前tag的全部tag子节点,并推断是否符合过滤器的条件。

find_all( name , attrs , recursive , text ,**kwargs )

第一个參数为Tag的名称

#第一个參数为Tag的名称,如:tag.find_all(‘title’)#得到”&%^&*”,结果为一个列表

第二个參数为匹配的属性

tag.find_all(“title”,class=”sister”)#得到如”%^*&
第二个參数也能够为字符串,得到字符串匹配的结果

tag.find_all(“title”,”sister”)#得到如”%^*&

完整具体的中文文档见:

你可能感兴趣的文章
include与jsp:include区别
查看>>
ftp的20 21端口和主动被动模式
查看>>
MySQL存储引擎选型
查看>>
Java中的statickeyword具体解释
查看>>
Linux车载系统的开发方向
查看>>
并发编程之五--ThreadLocal
查看>>
摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置
查看>>
iOS播放短的音效
查看>>
[java] java 线程join方法详解
查看>>
JQuery datepicker 用法
查看>>
golang(2):beego 环境搭建
查看>>
天津政府应急系统之GIS一张图(arcgis api for flex)讲解(十)态势标绘模块
查看>>
程序员社交宝典
查看>>
ABP理论学习之MVC控制器(新增)
查看>>
Netty中的三种Reactor(反应堆)
查看>>
网页内容的html标签补全和过滤的两种方法
查看>>
前端源码安全
查看>>
【CodeForces 618B】Guess the Permutation
查看>>
【转】如何实现一个配置中心
查看>>
Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】
查看>>