美文网首页
定向爬虫--中国大学排名

定向爬虫--中国大学排名

作者: 五秋木 | 来源:发表于2017-11-11 11:14 被阅读0次

    定向爬虫--针对固定网站的网页进行爬虫

    1. 目标网站--http://www.zuihaodaxue.cn
      具体网页:http://www.zuihaodaxue.cn/shengyuanzhiliangpaiming2017.html
      内容:软科中国最好大学排名-生源质量排名2017
    2. 查看源代码检查格式
    3. 查看该网站的robots协议
      在原网址的基础上添加:http://www.zuihaodaxue.cn/robots.txt
      显示网页不存在:即不存在robots.txt协议
    4. 程序设计


      程序设计
    5. 设计代码如下:
    import requests
    from bs4 import BeautifulSoup  # 引用bs4库中的BeautifulSoup类
    import bs4
    
    
    def getHTMLText(url):
        try:
            r = requests.get(url, timeout=30)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            return r.text
        except:
            return ""
    
    
    def fill_univlist(ulist, html):
        soup = BeautifulSoup(html, 'html.parser')
        for tr in soup.find("tbody").children:
            if isinstance(tr, bs4.element.Tag):
                # 检测出tbody儿子中的标签类,过滤掉非标签类
                tds = tr.find('td')
                # tds = tr('td')
                ulist.append(
                    [tds.contents[0].string, tds.contents[1].string, tds.contents[2].string, tds.contents[3].string])
    
    
    def print_univlist(ulist, num):
        tplt = "{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}"
        print(tplt.format("排名", "学校名称", "所在地", "总分", chr(12288)))
        for i in range(num):
            u = ulist[i]
            print(tplt.format(u[0], u[1], u[2], u[3]), chr(12288))
    
    
    def main():
        uinfo = []
        url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html"
        html = getHTMLText(url)
        fill_univlist(uinfo, html)
        print_univlist(uinfo, 20)
    
    main()
    

    结果显示:


    2017大学排名.PNG

    python中格式化输出太难看,需改进。
    另所书写的代码需要时刻与网页内容保持更新,不然很难适用

    相关文章

      网友评论

          本文标题:定向爬虫--中国大学排名

          本文链接:https://www.haomeiwen.com/subject/baibmxtx.html