3信息标记

1.信息标记的三种方式——(HTML,xml),json,YAML
json “key”:“value” “key”:[“value1”,“value2”]
''key1":{“key2”:“value2”}
YAML:无类型的键值对 name: 中北大学
用缩进来表达包含关系 name:
newname:中北大学
oldname:华北理工学院
用-表达并列关系 name:
-中北大学
-华北理工学院
用|表示整块数据 text: |。。。。。。。。。。。。
用#表示注释

2.三种形式的比较:
XML:
最早的通用信息标记语言,可扩展性好,但繁琐
主要用于Internet上信息交互与传递
json:有键值对的
信息有类型,适合程序处理(js),较xml简洁
主要用于移动应用云端和节点的信息通信,无注释
YAML:无键值对
信息无类型,文本信息比例最高,可读性好。
主要用于各类系统的配置文件,有注释易读。

3.信息提取的一般方式
方法一:完整解析信息的标记形式,再提取关键信息。
需要标记解析器 eg:bs4库的标签树遍历
优点:信息解析准确 缺点:提取过程繁琐,速度慢。
方法二:无视标记形式,直接搜索关键信息。
对信息的文本查找函数即可。
优点:提取过程简单,速度快 缺点:提取结果准确性与信息内容相关
融合方法:结合形式解析与搜索方法,提取关键信息
需要标记解析器及文本查找函数。

实例:提取HTML中的所有url链接
思路:①搜索到所有的a标签
②解析a标签格式,提取href后的链接内容

	informationSoup.py
	from bs4 import BeautifulSoup
	soup=BeautifulSoup(demo,"html.parser")
	for link in soup.find_all('a'):
		print(link.get('href'))

4.基于bs4库的HTML页面内容的查找方法
.find_all(name,attrs,recurive,string,**kwargs)返回列表类型,存储查找结果
①name:要索引标签的名称
eg1: for tag in soup.find_all(True):
print(tag.name)
返回所有标签的名字html,head,title,body,a,b,p,a
eg2:soup.find_all(‘a’) 返回所有的a标签内容
eg3:soup.find_all([‘a’,‘b’]) 返回所有的a标签,b标签的内容
eg4:返回所有的以b开头的标签的内容,要引用正则表达式
import re
for tag in soup.find_all(re.compile(‘b’)):
print(tag.name)-------b,body
②attrs:属性索引
eg1:soup.find_all(‘p’,‘course’)查找p标签中的course属性
eg2:soup.find_all(id=‘link1’)查找id属性为link1的
③recursive:是否对子孙全部检索,默认True
④string:<></>中字符串区域的检索字符串
eg:soup.find_all(string=‘Basic Python’)-------[‘Basic Python’]
eg:import re
soup.find_all(string=re.compile(‘python’))----返回带有此单词的字符串

简写:(…)==.find_all(…) soup(…)==soup.find_all(…)
bs4中查找特定区域内容的主要方法7个+find_all,一共8个

猜你喜欢

转载自blog.csdn.net/ajx10132/article/details/85990714