最近的几篇博客来源是之前我下载的一个课件
在网上搜索了一下是一下这个课程的,可以结合视频博客以及代码去更好地学习
Python网络爬虫与信息提取_北京理工大学_中国大学MOOC(慕课) (icourse163.org)
但是课程内容的案列已经很久了,很多网址已更新或者网络框架已经更新
“中国大学排名定向爬虫”实例介绍
最好大学网:【软科排名】2021年最新软科中国大学排名|中国最好大学排名 (shanghairanking.cn)
功能描述
输入:大学排名URL链接
输出:大学排名信息的屏幕输出(排名,大学名称,总分)
技术路线:requestsbs4
定向爬虫:仅对输入URL进行爬取,不扩展爬取
程序的结构设计
步骤1:从网络上获取大学排名网页内容 getHTMLText()
步骤2:提取网页内容中信息到合适的数据结构 fillUnivList()
步骤3:利用数据结构展示并输出结果 printUnivList()
可参考下列步骤,可以成功爬取到你想要的数据
1、进入 网址 ,可参考的下面的步骤,找到这些信息存储的地方:
2、在浏览器输入网址 :https://www.shanghairanking.cn/api/pub/v1/bcur?bcur_type=11&year=2020
参考博客python爬虫小案例_中国大学排名(2021.04.11)_不祈求 ~ ~-CSDN博客
看到数据是json格式
import requests
from bs4 import BeautifulSoup
import bs4
import json
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'}
url='https://www.shanghairanking.cn/api/pub/v1/bcur?bcur_type=11&year=2021'
def getHTMLText(url):
'''从网络上获取大学排名网页内容'''
try:
r = requests.get(url, headers=headers,timeout=40)
# #如果状态不是200,就会引发HTTPError异常
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
def fillUnivList(text, num):
# response = requests.get(url, timeout=40)
# text = response.text
data = json.loads(text)
content = data['data']['rankings']
ulist = []
for i in range(num):
index = content[i]['rankOverall']
name = content[i]['univNameCn']
score = content[i]['score']
category = content[i]['univCategory']
ulist.append([index, name, score, category])
return ulist
def printUnivList(ulist):
# 打印前 num 名的大学
#tplt ="{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}"
tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}\t{4:^10}" # {1:{3}^10} 中的 {3} 代表取第三个参数
print(tplt.format("排名 ", "学校名称", "总分", chr(12288), "类型")) # chr(12288) 代表中文空格
for i in range(100):
u = ulist[i]
# chr(12288) 代表中文空格
print(tplt.format(u[0], u[1], u[2], chr(12288), u[3]))
if __name__ == '__main__':
text=getHTMLText(url)
ulist=fillUnivList(text, 100)
printUnivList(ulist)
排名 学校名称 总分 类型 1 清华大学 969.2 综合 2 北京大学 855.3 综合 3 浙江大学 768.7 综合 4 上海交通大学 723.4 综合 5 南京大学 654.8 综合 6 复旦大学 649.7 综合 7 中国科学技术大学 577 理工 8 华中科技大学 574.3 综合 9 武汉大学 567.9 综合 10 西安交通大学 537.9 综合 11 哈尔滨工业大学 522.6 理工 12 中山大学 519.3 综合 13 北京师范大学 518.3 师范 14 四川大学 516.6 综合 15 北京航空航天大学 513.8 理工 16 同济大学 508.3 理工 17 东南大学 488.1 综合 18 中国人民大学 487.8 综合 19 北京理工大学 474 理工 20 南开大学 465.3 综合 21 山东大学 447 综合 22 天津大学 444.3 理工 23 中南大学 442.2 综合 24 吉林大学 435.7 综合 25 西北工业大学 430.5 理工 26 厦门大学 427.8 综合 27 华南理工大学 419.8 理工 28 大连理工大学 418.2 理工 29 华东师范大学 401.8 师范 30 中国农业大学 400.4 农业 31 电子科技大学 398.8 理工 32 湖南大学 393.5 综合 33 北京科技大学 379.4 理工 34 重庆大学 365.5 综合 35 南京航空航天大学 358.6 理工 36 东北大学 356.1 理工 37 南京理工大学 356 理工 38 西安电子科技大学 355.1 理工 39 兰州大学 353.4 综合 40 北京交通大学 349.9 理工 41 南方科技大学 345.8 综合 42 华中农业大学 338.5 农业 43 上海大学 333 综合 44 苏州大学 327 综合 45 华东理工大学 324.5 理工 46 华中师范大学 322 师范 47 南京师范大学 321.3 师范 48 中国地质大学(武汉) 320.2 理工 49 东北师范大学 319.7 师范 50 哈尔滨工程大学 319 理工 51 西南交通大学 318 理工 52 南京农业大学 316.1 农业 53 郑州大学 312.8 综合 54 北京邮电大学 312.5 理工 55 武汉理工大学 312.2 理工 56 中国海洋大学 311 综合 57 暨南大学 307.4 综合 58 中国石油大学(北京) 307.3 理工 59 北京工业大学 306 理工 60 河海大学 303.4 理工 61 中国矿业大学 301.6 理工 62 北京化工大学 296.7 理工 63 中国地质大学(北京) 295.5 理工 64 西北大学 293 综合 65 江南大学 292.9 综合 66 上海科技大学 288.7 综合 67 中国石油大学(华东) 287.4 理工 68 西南大学 286.5 综合 69 中国矿业大学(北京) 285.5 理工 70 深圳大学 280.4 综合 71 陕西师范大学 280.1 师范 72 江苏大学 276.9 综合 73 浙江工业大学 275.6 理工 74 北京林业大学 275 林业 75 华南师范大学 274.7 师范 76 西北农林科技大学 273.7 农业 77 扬州大学 269.5 综合 78 南昌大学 268.9 综合 79 福州大学 267.7 理工 80 华北电力大学 263.2 理工 81 东华大学 262.8 理工 82 合肥工业大学 262.7 理工 83 云南大学 262.1 综合 84 宁波大学 261.4 综合 85 首都师范大学 261.1 师范 86 湖南师范大学 259.6 师范 87 南京工业大学 259.5 理工 88 长安大学 250.2 理工 89 福建师范大学 248.2 师范 90 安徽大学 243.1 综合 91 南京信息工程大学 240.9 理工 92 上海理工大学 240.7 理工 93 华南农业大学 238.3 农业 94 广西大学 237 综合 95 南京邮电大学 235.7 理工 95 燕山大学 235.7 理工 97 河南大学 234.6 综合 98 湖北大学 232.9 综合 99 广州大学 232.7 综合 100 青岛大学 231.4 综合