国内大学排名如何?用Python爬取中国大学排名

国内大学排名如何?用Python爬取中国大学排名

  • 准备阶段
    • 需要的库
    • robots协议
  • 上代码
    • 代码框架
    • *获取url信息
    • *解析信息
    • *输出数据
    • *主函数
  • 结果

准备阶段

新手入门,不喜勿喷,这篇文章的内容其实也是在中国大学MOOC 北理工 嵩天老师的课程基础上完成。由于大学排名有众多不同的影响因素,根据指标不同,有很多排名,我们就选取最好大学网的排名。

需要的库

import requests
from bs4 import BeautifulSoup
import bs4

robots协议

如下图,显然,这个网站没有robots协议,也就是说,我们可以认为它是允许所有的爬虫进行爬取任何内容的。

国内大学排名如何?用Python爬取中国大学排名_第1张图片

上代码

代码框架

def getHTMLtext(url):
    try:
    	return r.text
 	except:
        return ""
def fillunivlist(ulist,html):
	return ""
def printlist(ulist,num):
	return ""
def main():
	return ""
main()

大概就是这样,我们定义四个函数。
其大体作用分别为获取url信息;解析信息并填写在列表中;输出信息;提供url并执行函数……

*获取url信息

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 fillunivlist(ulist,html):
    soup=BeautifulSoup(html,"lxml")
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag):
            tds=tr('td')
            ulist.append([tds[0].string,tds[1].string,tds[3].string])

*输出数据

def printlist(ulist,num):
    tplt="{0:^10}\t{1:{3}^10}\t{2:^10}"
    print(tplt.format("排名","学校名称","总分",chr(12288)))
    for i in range(num):
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))

*主函数

def main():
    uinfo=[]
    url='http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'
    html=getHTMLtext(url)
    fillunivlist(uinfo,html)
    printlist(uinfo,20)
main()

结果

由于数据比较多,我们就取前20看一下效果吧!
国内大学排名如何?用Python爬取中国大学排名_第2张图片国内大学排名如何?用Python爬取中国大学排名_第3张图片

你可能感兴趣的:(笔记)