html提取信息变xml,Python爬虫之信息标记与提取(XML&JSON&YAML)

信息标记

标记后的信息可形成信息组织结构,增加了信息维度

标记的结构与信息一样具有重要价值

标记后的信息可用于通信、存储或展示

标记后的信息更利于程序理解和运用

c3adb530b3a5

image.png

HTML通过预定义的<>…>标签形式组织不同类型的信息

信息标记的种类

XML

JSON

YAML

XML

c3adb530b3a5

image.png

c3adb530b3a5

image.png

c3adb530b3a5

image.png

JSON

c3adb530b3a5

image.png

c3adb530b3a5

image.png

c3adb530b3a5

image.png

c3adb530b3a5

image.png

c3adb530b3a5

image.png

YAML

c3adb530b3a5

image.png

c3adb530b3a5

image.png

c3adb530b3a5

image.png

c3adb530b3a5

image.png

c3adb530b3a5

image.png

c3adb530b3a5

image.png

三种标记类型的比较

XML 最早的通用信息标记语言,可扩展性好,但繁

JSON 信息有类型,适合程序处理(js),较XML简洁

YAML 信息无类型,文本信息比例最高,可读性好

XML Internet上的信息交互与传递

JSON 移动应用云端和节点的信息通信,无注释

YAML 各类系统的配置文件,有注释易读

信息提取

从标记后的信息中提取所关注的内容

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

XML JSON YAML

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

优点:信息解析准确

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

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

搜索

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

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

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

融合方法:结合形式解析与搜索方法,提取关键信息

XML JSON YAML 搜索

需要标记解析器及文本查找函数

实例

提取HTML中所有URL链接

思路:

搜索到所有标签

解析标签格式,提取href后的链接内容

c3adb530b3a5

image.png

基于bs4的html信息提取的实例

c3adb530b3a5

image.png

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

∙ name : 对标签名称的检索字符串

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

c3adb530b3a5

image.png

c3adb530b3a5

image.png

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

∙ name : 对标签名称的检索字符串

∙ attrs: 对标签属性值的检索字符串,可标注属性检索

c3adb530b3a5

image.png

>>> soup.find_all('p', 'course')

[

Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:

Basic Python and Advanced Python.

]

>>> soup.find_all('p','course')

[

Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:

Basic Python and Advanced Python.

]

>>> soup.find_all('p','title')

[

The demo python introduces several python courses.

]

>>> soup.find_all(id = 'link1')

[Basic Python]

>>>

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

∙ name : 对标签名称的检索字符串

∙ attrs: 对标签属性值的检索字符串,可标注属性检索

>>> soup.find_all(id = re.compile('link'))

[Basic Python, Advanced Python]

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

∙ name : 对标签名称的检索字符串

∙ attrs: 对标签属性值的检索字符串,可标注属性检索

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

>>> soup.find_all('a')

[Basic Python, Advanced Python]

>>> soup.find_all('a',recursive=False)

[]

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

∙ name : 对标签名称的检索字符串

∙ attrs: 对标签属性值的检索字符串,可标注属性检索

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

∙ string: <>…>中字符串区域的检索字符串

>>> soup

This is a python demo page

The demo python introduces several python courses.

Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:

Basic Python and Advanced Python.

>>> soup.find_all(string='Basic Python')

['Basic Python']

>>> import re

>>> soup.find_all(string=re.compile('python'))

['This is a python demo page', 'The demo python introduces several python courses.']

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

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

c3adb530b3a5

image.png

小结

c3adb530b3a5

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值