“中国大学排名定向爬虫”
在查看了最好大学网里中国大学排名的源代码,发现这些内容都在tbody里面,然后每个大学有在tr里面,每个大学的信息又在td里面,下面进行代码的讲解
import requests
from bs4 import BeautifulSoup
import bs4
def gethtml(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text##获取html内容
except:
return ""
def fillunivlist(ulist,html):
soup=BeautifulSoup(html,'html.parser')#打包汤
for tr in soup.find('tbody').children:#遍历tbody的儿子tr
if isinstance(tr,bs4.element.Tag):
#isinstance(a,b)判断a是否为b类型
tds=tr('td')
ulist.append([tds[0].string,tds[1].string,tds[2].string,tds[3].string])
def printunivlist(ulist,num):
tplt="{0:^10}\t{1:{4}^10}\t{2:^10}\t{3:^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],u[3],chr(12288)))
def main():
uinfo=[]
url='http://www.zuihaodaxue.com//zuihaodaxuepaiming2018.html'
html=gethtml(url)
fillunivlist(uinfo,html)
printunivlist(uinfo,20)
main()