目标网址:是最好大学网啦
本文根据崇天老师的课程撰写
爬取的过程可以分为三个步骤:
步骤1:从网络上获取排名网页内容
步骤2:提取网页内容中信息
步骤3:展示并输出结果
直接上代码啦
import requests
from bs4 import BeautifulSoup
import bs4
#获取URL信息,输出URL内容
def getHTMLText(url):
try:
#获取网页的内容,并返回给r变量
r=requests.get(url,timeout=30)
#检查返回网页的内容的状态码,200表示成功
r.raise_for_status()
#统一编码方式
r.encoding=r.apparent_encoding
#返回网页内容
return r.text
except:
#出错返回error
return " error"
#将页面放到ulist列表中 ps:此部分为爬取内容的关键部分
def fillUnivList(ulist,html):
#解析网页返回内容
soup=BeautifulSoup(html,"html.parser")
#检查目标网址可知爬取内容均在tbody标签中
for tr in soup.find('tbody').children:
#判断tr标签的类型
if isinstance(tr,bs4.element.Tag):
tds=tr('td')
#需要增加的字段及类型
ulist.append([tds[0].string,tds[1].string,tds[2].string])
#将ulist信息打印出来,num:打印元素个数
def printUnivList(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/Greater_China_Ranking2019_0.html"
html= getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20)
main()
运行后如图: