中国大学排名爬取代码更新
#他们网站的源代码变过多次,所以重写了爬取代码
完整代码:
import requestsimport redef getHtmlText(url):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:print("getHtmlText err")def parsePage(ulist,html):try:ranking=re.findall(r'\"ranking\"\:\"[\d]*\"',html)univNameCn=re.findall(r'\"univNameCn\"\:\".*?\"',html)scores=re.findall(r'\"score\"\:[\d]*',html)for i in range(30):rank=eval(ranking[i].split(":")[1])name=eval(univNameCn[i].split(":")[1])score=eval(scores[i].split(":")[1])ulist.append([rank,name,score])except:print("parsePage err")def printGoodsList(ulist):tplt = "{0:^10}{1:{3}^10}{2:^10}"print(tplt.format("序号", "学校名称", "分数", chr(12288))) # 中文空格填充,能保证输出对齐for i in range(len(ulist)):u = ulist[i]print(tplt.format(u[0], u[1], u[2], chr(12288)))def main():url = "https://www.shanghairanking.cn/api/pub/v1/bcur?bcur_type=11&year=2020"ulist = []html = getHtmlText(url)parsePage(ulist,html)printGoodsList(ulist)main()
使用https://www.shanghairanking.cn/_nuxt/static/1627561984/rankings/bcur/2021/payload.js的代码。
import requestsimport redef getHtmlText(url):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:print("getHtmlText err")def parsePage(ulist,html):try:#ranking=re.findall(r'\"ranking\"\:\"[\d]*\"',html)univNameCn=re.findall(r'univNameCn\:\".*?\"',html)scores=re.findall(r'score\:[\d]*',html)for i in range(30):#rank=eval(ranking[i].split(":")[1])name=eval(univNameCn[i].split(":")[1])score=eval(scores[i].split(":")[1])ulist.append([name,score])except:print("parsePage err")def printGoodsList(ulist):tplt = "{0:^10}{1:{3}^10}{2:^10}"print(tplt.format("序号", "学校名称", "分数", chr(12288))) # 中文空格填充,能保证输出对齐for i in range(len(ulist)):u = ulist[i]print(tplt.format(i, u[0], u[1], chr(12288)))def main():url = "https://www.shanghairanking.cn/_nuxt/static/1627561984/rankings/bcur/2021/payload.js"ulist = []html = getHtmlText(url)parsePage(ulist,html)printGoodsList(ulist)main()
1、新的url怎么获取
直接查看页面源代码,并没有发现我们想要获取的信息。于是,按f12打开开发者工具;在network栏目下,刷新一下页面,按ctrl+f打开搜索框,随便输入任意一个大学名称,就可以发现我们真正想要的内容很可能藏在/api/pub/v1/bcur?bcur_type=11&year=2020文件中。
点击左边搜索到的链接,再点右边的preview,就能发现这个是我们要的url
从headers里面复制url
2、对获取的内容进行分析
import requestsurl = "https://www.shanghairanking.cn/api/pub/v1/bcur?bcur_type=11&year=2020"html = requests.get(url)html.encoding = html.apparent_encodingprint(html.text)
执行以上代码可以得到的信息如下:
3、选择技术路径
由于我们要的信息都在键值对中,所以适合的方案不是beautifulsoup库,而是用re进行正则匹配。后面的思路可以参考淘宝爬取商品的课程
中国大学排名爬取代码更新相关推荐
- Python爬虫入门之2022软科中国大学排名爬取保存到csv文件
一.实验方案设计 1.获得"2022软科中国大学排名"数据,从[软科排名]2022年最新软科中国大学排名|中国最好大学排名网页中获得排名数据信息,并将数据保存到csv文件中. 2. ...
- requests+BeautifulSoup入门——爬取2015-2020年中国大学排名并写入csv文件中
requests作为python第三方库,为用户爬取网页内容省下很多力气 BeautifulSoup同样也是python第三方库,它可以将用requests获取到的网页内容美化,也就是做成一碗&quo ...
- python中国大学排名爬虫写明详细步骤-python爬虫爬取2020年中国大学排名
from bs4 import BeautifulSoup # 网页解析 获取数据 import re # 正则表达式 进行文字匹配 import urllib.request, urllib.err ...
- Python爬取中国大学排名,并且保存到excel中
前言 以下文章来源于数据分析和Python ,作者冈坂日川 今天发的是python爬虫爬取中国大学排名,并且保存到excel中,当然这个代码很简单,我用了半小时就写完了,我的整体框架非常清晰,可以直接 ...
- Python练习-爬虫(附加爬取中国大学排名)
Python与网页处理 Python 语言发展中有一个里程碑式的应用事件,即美国谷歌(GOOGLE)公司在搜索引擎后端采用Python 语言进行链接处理和开发,这是该语言发展成熟的重要标志.Pytho ...
- 爬虫爬取中国大学排名top100并简单可视化分析
爬虫爬取中国大学排名top100并简单可视化分析. 目标链接 http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html 实践环境 pycharm201 ...
- 爬取中国大学排名并以csv格式存储
爬取中国大学排名并以csv格式存储 import requests from bs4 import BeautifulSoup import bs4def get_content(url):try:u ...
- python中国最好大学排名_国内大学排名如何?用Python爬取中国大学排名
国内大学排名如何?用Python爬取中国大学排名准备阶段需要的库robots协议上代码代码框架*获取url信息*解析信息*输出数据*主函数结果 准备阶段 新手入门,不喜勿喷,这篇文章的内容其实也是在中 ...
- 第一个爬虫程序之定向爬取中国大学排名(收获良多,不仅仅是写个程序,更是编程的步骤方法)
第一个爬虫程序之定向爬取中国大学排名(收获良多,不仅仅是写个程序,更是编程的想法) 名称:定向爬取--中国大学排名定向爬取 首先,爬之前,看看你要定向爬取的网站和数据是什么类型的? 打开你要爬取网站, ...
最新文章
- 三个数字的运算规律预测
- 项目Beta冲刺 用户试用报告
- 安规电容能用什么代替_电容系列之安规电容
- 【Python CheckiO 题解】Say Hi
- kafka server常用核心配置
- “最快3个月复制支付宝的核心能力” 解密蚂蚁金服bPaaS
- 46多项式01——一元多项式和运算
- aardio Access数据库和所有表
- Android编程入门-第1天
- element实现table表格序号递增的效果
- c++ vs2015 播放音乐_三星s20都取消了耳机孔,1k-2k的播放器会成为直推党新选择吗?...
- 2020Pyton开发者日线上技术峰会主题:爬虫框架的技术实现与模块应用的经验分享
- 数据驱动测试一:使用TestNG进行数据驱动
- MSTSC远程连接教程
- div+css显示两行或三行文字
- grread使用例子 lisp_Autolisp编程心得
- List,Set,Map集合总结
- Google地图加密算法
- python画十字_如何绘制十字线并在pyqtgraph中绘制鼠标位置?
- PDF图纸长度怎么测量