python爬取最好大学排名
#coding=GBK
import requests
from bs4 import BeautifulSoup
import bs4
def getHTMLText(url): // 将url信息爬取,并将html页面返回给其他程序
try:
r = requests.get(url,timeout=30) //30miao
r.raise_for_status() //产生异常信息 要检查请求是否成功,请使用 r.raise_for_status()
r.encoding=r.apparent_encoding //修改编码
return r.text //返回给程序的其他部分
except:
return "error"
def fillUnivList(ulist,html): // 提取html中有用的信息,并添加到列表中
soup=BeautifulSoup(html,"html.parser") //解析器
for tr in soup.find('tbody').children: //查找tr标签,遍历标签树
if isinstance(tr,bs4.element.Tag): // 对类型进行判断,监测tr标签类型
tds = tr('td') //列表类型tds 这是简写 tds=tr.find_all(‘td')
ulist.append([tds[0].string,tds[1].string,tds[3].string])
def printUnivList(ulist,num): // 打印ulist列表
tplt="{0:^10}\t{1:{3}^10}\t{2:^10}" //格式化输出 {1:{3}^10} 1表示位置,{3}表示用第3个参数来填充,^表示居中,10表示占10个位置
print(tplt.format("排名","学校名称","总分",chr(12288))) //中文空白字符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.cn/zuihaodaxuepaiming2018.html'
html = getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20) //打印大学信息
main()