【python爬虫学习笔记】04 BeautifulSoup库入门及信息的标记方法

1.BeautifulSoup库概述

BeautifulSoup库的基本介绍
BeautifulSoup库相当于一个标签树,也可称为是一个HTML文档,这个库对应于一个HTML/XML文档的全部内容。
bs4库的基本元素
Tag,Name,Attributes,NavigableString,Comment

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

1. 标签树的下行遍历

标签用法 注释
.contents 子节点的列表,将所有儿子节点存入列表
.chirdren 子节点的迭代类型,与.contents类似,用于循环遍历儿子节点
.descendants 子孙节点的迭代类型,包含所有子孙节点,用于循环遍历

2.标签树的上行遍历

标签用法 注释
.parent 节点的父亲标签
.parents 节点先辈标签的迭代类型,用于循环遍历先辈节点

3.标签树的平行遍历
平行遍历发生在同一个父节点下的各节点间

标签用法 注释
.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

4.基于bs4库的HTML格式化和编码
bs4库的prettify()方法:
为HTML文本和标签内容增加换行符,能够更加清楚的看出级层关系

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

<>.find_all(name,attrs,recursive,string,**kwargs)
<tag>(...) 等价于 <tag>.find_all(...)
soup(...) 等价于 soup.find_all(...)

返回一个列表类型,存储查找的结果
name:对标签名称的检索字符串
attrs:对标签属性值的检索字符串,可标注属性检索
recursive:是否对子孙全部检索,默认情况是True
string:<></>中字符串区域的检索字符串

3.信息的标记方法

1.信息的标记

标记后的信息可以形成信息组织结构,增加了信息维度
标记后的信息可以用于通信、存储或展示
标记的结构与信息一样具有重要价值
标记的信息更利于程序的理解和应用
HTML的信息标记:HTML通过预定义的<></>标签形式组织不同类型的信息

2.信息标记的三种形式

  1. XML 类似HTML
    最早的通用信息标记语言,可扩展性好,但繁琐
  2. JSON 有类型的键值对 key:value
    信息有类型,适合程序处理(js),较XML简洁
    “name”:[“大学”,“研究所”]
    “key”:{“subkey”:“subvalue”}
  3. YAML 无类型键值对 key:value
    信息无类型,文本信息比例最高,可读性好
    name:大学
    key:{subkey:subvalue}
    -(减号) 表达并列关系
    |(竖线) 表达整块数据
    # 表示注释

3.三种信息标记形式的比较

XML Internet上的信息交互与传递
JSON 移动应用云端和节点的信息通信,无注释
YAML各类系统的配置文件,有注释,易读

4.信息提取的一般方法

方法一:完整解析信息的标记形式,再提取关键信息
XML JSON YAML
需要标记解析器,例如bs4库的标签树遍历
优点:信息解析准确
缺点:提取过程繁琐,速度慢

方法二:无视标记形式,直接搜索关键信息
搜索
对信息的文本查找函数即可
优点:提取过程简介,速度较快
缺点:提取结果准确性与内容相关

融合方法:结合形式解析与搜索方法,提取关键信息
XML JSON YAML 搜索
需要标记解析器及文本查找函数

实例
	提取HTML中的所有URL连接
	思路:
		1)搜索到所有<a>标签
		2)解析<a>标签格式,提取href后的链接内容

猜你喜欢

转载自blog.csdn.net/weixin_42864175/article/details/84887545
今日推荐