信息标记 以及信息提取--xml-json-yaml

1 信息标记的三种方式:html

 

 

 XML:app

 

 

 JSON:函数

 

YAML:ui

1 缩进 表示所属关系:

  2 - 表示并列关系:url

 3 | 表示整块数据:spa

 

 

 

 

 

   HTML----XML的一种形式:3d

 

 

信息提取的方法:code

 信息提取的方法 1 完整解析信息的标记形式,再提取关键信息---须要标记解析器 优势 信息解析准确 缺点 提取过程繁琐 速度慢 2 无视标记信息,直接搜索关键字 搜索===对文本查找函数便可 优势 信息解析速度快,过程简洁 缺点 提取准确性低


  

     形式解析 + 正则(或者其余匹配规则)---融合方法orm

 

 

 

 

 

3 基于bs4库的HTML内容查找:htm

   

BeautifulSoup类的查找方法:

1 soup.find_all ( name,attrs,recursive,string,**kwargs )

 

from bs4 import BeautifulSoup
import requests
import re
r=requests.get('http://www.baidu.com')
demo=r.text[:1000]
soup=BeautifulSoup(demo,'html.parser')
# for tag in soup.find_all(id=re.compile('k')):
#     print(tag)
print( soup.find_all('head') )  # 查找 head标签
# print(soup.find_all(re.compile('a')),len(soup.find_all(re.compile('b'))))

 

 

 

 

 

例子 大学排名

# <tr class="alt"> <td>9</td> <td><div align="left">南京大学</div></td> <td>江苏</td> <td>87.1 </td> </tr>
from bs4 import BeautifulSoup import requests def getHTMLText(url): try: r=requests.get(url) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: print('error!!') def fillUniverList(ulist,html): soup=BeautifulSoup(html,'html.parser') for tr in soup.find('tbody').children: if not isinstance(tr,str): tds=tr.find_all('td') ulist.append([tds[0].string,tds[1].string,tds[2].string]) def printUniverList(ulist,num): print('{0:^10}\t{1:^10}\t{2:^10}'.format('排名','学校名称','总分')) for i in range(num): u=ulist[i] print('{0:^10}\t{1:^10}\t{2:^10}'.format(u[0], u[1], u[2])) def main(): ulist=[] url='http://www.zuihaodaxue.cn/shengyuanzhiliangpaiming2017.html' html=getHTMLText(url) fillUniverList(ulist,html) printUniverList(ulist,20) # 20 unis main()

相关文章
相关标签/搜索