【python爬虫笔记】网络爬虫之提取

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_37378518/article/details/81878674

unit 4 BeautifulSoup库入门

BeautifulSoup库是解析、遍历、维护“标签树”的功能库

  • 标签 tag
  • name(成对出现) attributes(0或多个)

beautifulSoup对应一个html/xml文档的全部内容

beautiful soup库解析器
解析器 使用方法 条件
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
NavigableString <>…中字符串,.string
Comment 标签内字符串的注释部分,一种特殊的Comment类型

任何存在于HTML语法中的标签都可以用soup.访问获得。当HTML文档中存在多个相同对应内容时,soup.返回第一个

NavigableString可以跨越多个层次

基于bs4库的HTML内容遍历方法

< >…< /> 构成了所属关系,形成了标签的树形结构

标签树的下行遍历
属性 说明
.contents 子节点的列表,将所有儿子节点存入列表
.children 子节点的迭代类型,与.content类似,永远循环遍历儿子节点
.descendants 子孙节点的迭代类型,包含所有子孙节点,用于循环遍历

BeautifulSoup类型是标签树的根节点

标签树的上行遍历
属性 说明
.parent 节点的父标签
.parents 节点先辈标签的迭代类型,用于循环遍历先辈节点

遍历所有先辈节点,包括soup本身

标签树的平行遍历
属性 说明
.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next_sibling 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

平行遍历发生在同一个父节点下的各个节点间

基于bs4库的HTML格式输出
prettify()方法

为HTML文本<>及内容增加‘\n’

可用于标签,方法:< tag >.prettify()

bs4库的编码

bs4库将任何HTML输入都变成utf-8编码

python3默认支持编码是utf-8, 解析无障碍

Unit5 信息标记与提取方法

信息标记的三种形式
XML 最早的通用信息标记语言,可扩展性好,但繁琐 Internet上的信息交互与传递
JSON 信息有类型,适合程序处理,较XML简洁 移动应用云端和节点的信息通信,无注释
YAML 信息无类型,文本信息比例最高,可读性好 各类系统的配置文件,有注释易读
信息提取的一般方法

方法一:完整解析信息的标记形式,再提取关键信息

需要标记解析器,例如:bs4库的标签树遍历

优点:信息解析准确

缺点:提取过程繁琐,速度慢

方法二:无视标记形式,直接搜索关键信息

对信息的文本查找函数即可

优点:提取过程简洁,速度较快

缺点:提取结果准确性与信息内容相关

基于bs4库的HTML内容查找方法

<>.find_all(name, attrs, recursive, string, **kwargs)

​ 返回一个列表类型,存储查找的结果

​ recursive:是否对子孙全部检索,默认True

​ String:<>content< /> 中字符串区域的检索字符串

< tag >(..) 等价于 < tag >.find_all(..)

soup(..) 等价于 soup.find_all(..)

猜你喜欢

转载自blog.csdn.net/baidu_37378518/article/details/81878674