PYTHON网络爬虫与信息提取[信息的组织与提取](单元五)

1 三种信息类型的简介

xml : extensible markup language

与html非常相似

现有html后有xml 

xml是html发展来的 扩展 通用

 

json  类型

javascript object notation 

有类型的键值对 表达的方式

一个key对应多个值

"key1":["asas",''asas'']

嵌套使用

"name":{

  "newname":“北京理工大学”

  "oldname":"延安自然科学院"

}

 

yaml   (yaml ain't markup language) :)

name: 北京理工大学  无类型的

通过缩写表示所属的相关关系(嵌套)

name:
  oldname:xxxxx

  newname:sasas

通过减号表达并列关系

name :

-xxxxxx

-asasasas

竖线表示整块数据

text:|

asdadsssssssssssssdsd

sdadasdasdasdasdasd

asdasd

#表示注释

xml 世界上最早的通用信息标记语言 ,可拓展性好

json 信息有类型,适合程序处理,简介

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

 

xml  internet上的交互与流动

json 程序对借口的使用,云端   但是无注释

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

2 信息提取的一般方法

方法一:完整解析信息的标记形式,需要表及解析器 列如 bs4的标签书遍历

繁琐慢;

方法二:无视标记信息,直接提取关键信息,利用文本查找

准确性与内容相关

融合方法:结合形式解析与搜索方法

 

例:

提取html上所有的URL链接

1.找到所有的a标签

2.找到a标签中的href?

form bs4 import BeautifulSoup

soup=BeautifulSoup(demo,"html.parser")

for link in soup.find_all("a"):

   print(link.get("href"))

 

3基于BeautifulSoup的内容查找

方法find_all(name,attrs,recursive,string,**kwargs)

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

soup.find_all("a”)

soup,find_all(["a","b"]) 同时查找ab标签

for tag in soup.find_all(True):

  print(tag.name)

可以打印该soup中的所有tag信息

import re

for tag in soup.find_all(re.compile("b")):

  print(tag.name)

打印以b开头的

 

attrs 

查找p标签中带有course属性值的的

soup.find_all("p","course")

//soup.find_all("p",attrs={"ssdsd":"dssds})

也可以约定是某一个属性为XX

soup.find_all(id="link1") 

#id属性为link1

import re //利用正则表达式

 

recursive 表示是否对所有子孙都搜索 默认为TRUE

soup.find_all("a")

 

string 对标签中的字符穿检索的属性

例:
soup.find_all(string="Basic python")

也可以用正则表达式

 

简短形式

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

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

 

7个拓展方法

find  只返回一个结果 字符串类型

find_parents 只在先辈节点中搜索,返回一个列表

find_parent 只在黔北节点中搜索,返回结果 字符串类型一个

find_next_siblings只在后续平行节点中搜索,返回列表类型

find_next_sibling 同上只返回一个 字符串类型

find_previous_siblings

find_previsou_sibling 同上

差不多

 

转载于:https://www.cnblogs.com/sfzyk/p/6516879.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值