Python网络爬虫与信息提取MOOC学习——信息标记

本文探讨了HTML之外的三种关键信息标记语言——XML、JSON和YAML,比较了它们的特性和用途,重点在于互联网交互、移动应用配置和编程接口。此外,介绍了信息提取的常用方法,如BeautifulSoup在HTML内容查找中的应用。
摘要由CSDN通过智能技术生成

一、信息标记的三种形式

信息标记:表明这个信息的类型(是一个名字还有一个地方等等)。可形成信息组织结构,增加信息维度;可用于通信、存储或展示;更利于程序理解和运用。

HTML信息标记是WWW (World Wide Web)的信息组织形式。可以将声音、图像、视频等组织成超文本嵌入到文本中,通过预定义的<> ...</>  标签形式组织不同类型的信息

国际公认的三种信息标记形式:XML, JSON, YAML

 

 XMLJSONYAML
全称扩展标记语言,与HTML接近,eXtensible Markup LanguageJavaScript Object NotationYAML Ain't Markup Language
用法

1. 以标签为主来构建信息,表达信息(名字、属性、相关内容)

<img src = "China.jpg" size = "10">...</img>

2. 如果没有内容可以用缩写形式,

<img src = "china.jpg" size = "10" /> (一对尖括号即可表示一个标签。)

3. 注释形式<--!comment-->

键值对组织信息,需要用双引号

1. 有类型的键值对构建的  key: value   "name": value,2. 对应多个值时,采用方括号加逗号来组成"name": ["wang", "zhnag"]

3. 嵌套用{}

 

无类型键值对(没有双引号等)

1. key: value , name: value,

2. 用缩进代替大括号~Python

无类型键值对,简介,相关关联

3. 用减号表达并列关系

4. | 表示整块数据

5. #表示注释

可以嵌套,用缩进形式

主要应用Internet上的信息交互与传递移动应用云端和节点的信息通信(用在程序对接口处理的时候,经过传输之后能够作为程序代码的一部分直接运行。)无注释。各类系统的配置文件,有注释易读。
优缺点

最早通用信息标记语言,可扩展性好。

繁琐。大多数信息被标签占用,代码不够整洁。

对于JS可以直接将JSON作为编写程序的一部分,可以简化程序。信息有类型,适合程序处理(JS),较XML简洁

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

二、信息提取的一般方法

1. 完整的解析信息的标记形式,再提取关键信息。需要标记解析器。解析准确,过程繁琐速度慢。

2. 无视任何信息标记形式,直接搜索。利用查找函数。过程简单速度快,准确性不高。(提取结果准确性与信息内容相关)

3. 融合方法“形式解析+搜索。 

提取信息最关键最基础的函数。BeautifulSoup库。 Beautiful Soup库,提取HTML中所有的URL链接。

 搜索到所有的<a>标签,解析<a>标签格式,提取href后的链接内容

import requests
r = requests.get("http://python123.io/ws/demo.html")
demo = r.text

from bs4 import BeautifulSoup
soup = BeautifulSoup(demo, "html.parser")
#查找a标签
for link in soup.find_all('a'):
    print(link.get('href'))  

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

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

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

对标签名称的检索字符串;对标签属性的检索字符串;是否针对所有子孙节点进行搜索(默认是True打印所有的子孙节点,False只搜索儿子层面),<>...</>中字符串区域的检索字符串,控制访问参数

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

soup

soup.find_all('a')   #找所有的a标签
soup.find_all(['a','b'])  #a标签和b标签
soup.find_all('p', 'course') #p标签,属性是course 
soup.find_all(id = 'link1')  #id是link1的标签
soup.find_all('a', recursive = False)  #a标签,只找下一层儿子节点
soup.find_all(string = 'Basic Python')  #字符串区域内容是Basic Python

import re   #正则表示库
for tag in soup.find_all(re.compile('b')):  #re.compile('b')以b开头的所有的信息
    print(tag.name)  #打印满足条件的所有标签名称

soup.find_all(string = re.compile('python')) #字符串区域内容里是以python开头

七个查找方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值