zoukankan      html  css  js  c++  java
  • 信息标记 以及信息提取--xml-json-yaml

    1 信息标记的三种方式:

     

     XML:

     

     JSON:

    YAML:

    1  缩进 表示所属关系:

      2 - 表示并列关系:

     3 | 表示整块数据:

    
    

     

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

     

    信息提取的方法:

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


      

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

     

     

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

       

    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}	{1:^10}	{2:^10}'.format('排名','学校名称','总分'))
        for i in range(num):
            u=ulist[i]
            print('{0:^10}	{1:^10}	{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()

     
    读书使人心眼明亮
  • 相关阅读:
    最新的Zynq资料整理
    异步FIFO的FPGA实现
    Mac 下安装PHP遇到的问题
    php 实现推技术comet(转)
    高性能分布式内存队列系统beanstalkd(转)
    应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)
    memcache 缓存失效问题(转)
    PHP.ini文件读取不到
    PHP5中魔术方法
    python mysql 单引号字符串过滤
  • 原文地址:https://www.cnblogs.com/big-handsome-guy/p/7593818.html
Copyright © 2011-2022 走看看