运行结果
运行结果数据来源:最好大学网
说明
- requests库是一个常用的用于http请求的模块,它使用python语言编写,可以方便的对网页进行爬取,是学习python爬虫的较好的http请求模块。
- 如果你还没有安装这个库,只需要在命令行输入命令
pip install requests
即可安装 - BeautifulSoup是一个用来解析网页的常用python第三方库,类似于javascript的DOM,如果你学过,我想你应该有点印象
- 同样,如果你没有安装BeautifulSoup,只需要在命令行输入命令
pip install beautifulsoup4
即可安装。beautifulsoup4 是该库的第4个版本,是比较常用的一个版本
温馨提示:如果使用pip 经常因速度缓慢而安装失败的话,那么可能是因为软件源的原因。默认情况下,pip的软件源是国外的,所以速度很慢。如果想提高速度,最好换成国内的。你可以自己去找相关的教程,如果你懒得找或者比较急的话,可以看看这篇 更换国内软件源的教程
源代码
# 导入第三方库
import requests
# 注意:安装的时候是 beautifulsoup4, 导入的时候是 bs4
from bs4 import BeautifulSoup
import bs4
# 根据URL获取网页源代码
def getHTMLText(url):
try:
# 发起请求
r = requests.get(url, timeout=30)
# 当状态码不为200时,发出异常
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
# 将HTML中的信息填充到二维列表
def fillUnivList(ulist, html):
# 解析HTML
soup = BeautifulSoup(html, 'html.parser')
# 遍历HTML表格的行
for tr in soup.find('tbody').children:
if(isinstance(tr, bs4.element.Tag)):
# 获取每行的所有列
tds = tr('td')
# 将排名,学校名称,得分插入到ulist列表中
ulist.append([tds[0].string, tds[1].string, tds[3].string])
# 打印大学排名信息
def printUnivRank(ulist, num):
# chr(12288) 表示中文空格
print("{0:^10}\t{1:{3}^10}\t{2:^10}".format('排名','学校','得分',chr(12288)))
# 遍历前num 个学校的信息
for i in range(num):
# 取出第i个大学的数据
u = ulist[i]
print("{0:^10}\t{1:{3}^10}\t{2:^10}".format(
u[0], u[1], u[2], chr(12288)))
# 主函数
def main():
# 保存大学信息的列表
uinfo = []
url = 'http://zuihaodaxue.com/zuihaodaxuepaiming2019.html'
html = getHTMLText(url)
fillUnivList(uinfo, html)
# 20代表显示前20个大学,如果你想显示更多,可以修改这个数字
printUnivRank(uinfo, 20)
# 执行主函数
main()
最后
- 由于本人水平有限,出现错误或遗漏在所难免,希望读者朋友不吝赐教和批评指正
网友评论