【Python网络爬虫笔记】信息标记与提取方法
学习资源:中国大学MOOC Python网络爬虫与信息提取 北京理工大学计算机学院 嵩天
信息标记的三种形式
在学习信息标记的三种形式之前,我们有必要了解一下信息标记的作用。
1.标记后的信息可形成信息组织结构,增加了信息维度。
2.标记的结构与信息一样具有重要价值。
3.标记后的信息可用于通信、存储或展示。
4.标记后的信息更利于程序理解和运用。
信息标记的三种形式分别为XML(Extensible Markup Language,可扩展标记语言)、JSON(JavaScript Object Notation,JS对象简谱)和YAML(YAML Ain’t Markup Language,在开发这种语言时,YAML 的意思其实是”Yet Another Markup Language”,但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名)。
XML (Extensible Markup Language)
XML有以下三种写法:<name> ... </name>、<name />(空元素的缩写形式)和<!-- -->(注释书写形式)。

JSON (JavaScript Object Notation)
JSON以有类型的键值对key: value来表示,形式上非常类似于Python的字典。JSON有以下三种书写形式。
1.单值书写形式,例如"name": "西安邮电大学"。其中""为类型,"name"为键(key),"西安邮电大学"为值(value)。
2.多值书写形式,例如"name": ["西安邮电大学", "陕西师范大学", "西北政法大学"]。即多值用[,]组织。
3.键值对嵌套,例如:
1 | "name": { |
即键值对嵌套用{,}组织。
YAML (YAML Ain’t Markup Language)
YAML与JSON非常相似,它是以无类型的键值对key: value来表示。
YAML的缩进表达所属关系,例如:
1 | name: |
YAML的-表达并列关系,例如:
1 | name: |
YAML的|表达整块数据,#表示注释,例如:
1 | text: | # 学校介绍 |
三种信息标记形式的比较
下面是三种信息标记形式的实例:
)
)
信息标记形式|说明|适用于
——|——|——
XML|最早的通用信息标记语言,可扩展性好,但繁琐|Internet上的信息交互与传递
JSON|信息有类型,适合程序处理(JS),较XML简洁|移动应用云端和节点的信息通信,无注释
YAML|信息无类型,文本信息比例最高,可读性好|各类系统的配置文件,有注释易读
信息提取的一般方法
方法一:完整解析信息的标记形式,再提取关键信息。这种方法需要标记解析器(例如bs4库的标签树遍历),优点是信息解析准确,缺点是提取过程繁琐,速度慢。
方法二:无视标记形式,直接搜索关键信息。优点是提取过程简洁,缺点是提取结果准确性与信息内容相关。
融合方法:结合形式解析与搜索方法,提取关键信息。需要标记解析器及文本查找函数。
基于bs4的HTML内容查找方法
常用方法:<>.find_all()。它返回一个列表类型,存储查找的结果。
<tag>(...)等价于<tag>.find_all(...),soup(...)等价于soup.find_all()。
下表是一些扩展方法: