#他们网站的源代码变过多次,所以重写了爬取代码

完整代码:

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进行正则匹配。后面的思路可以参考淘宝爬取商品的课程

中国大学排名爬取代码更新相关推荐

  1. Python爬虫入门之2022软科中国大学排名爬取保存到csv文件

    一.实验方案设计 1.获得"2022软科中国大学排名"数据,从[软科排名]2022年最新软科中国大学排名|中国最好大学排名网页中获得排名数据信息,并将数据保存到csv文件中. 2. ...

  2. requests+BeautifulSoup入门——爬取2015-2020年中国大学排名并写入csv文件中

    requests作为python第三方库,为用户爬取网页内容省下很多力气 BeautifulSoup同样也是python第三方库,它可以将用requests获取到的网页内容美化,也就是做成一碗&quo ...

  3. python中国大学排名爬虫写明详细步骤-python爬虫爬取2020年中国大学排名

    from bs4 import BeautifulSoup # 网页解析 获取数据 import re # 正则表达式 进行文字匹配 import urllib.request, urllib.err ...

  4. Python爬取中国大学排名,并且保存到excel中

    前言 以下文章来源于数据分析和Python ,作者冈坂日川 今天发的是python爬虫爬取中国大学排名,并且保存到excel中,当然这个代码很简单,我用了半小时就写完了,我的整体框架非常清晰,可以直接 ...

  5. Python练习-爬虫(附加爬取中国大学排名)

    Python与网页处理 Python 语言发展中有一个里程碑式的应用事件,即美国谷歌(GOOGLE)公司在搜索引擎后端采用Python 语言进行链接处理和开发,这是该语言发展成熟的重要标志.Pytho ...

  6. 爬虫爬取中国大学排名top100并简单可视化分析

    爬虫爬取中国大学排名top100并简单可视化分析. 目标链接 http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html 实践环境 pycharm201 ...

  7. 爬取中国大学排名并以csv格式存储

    爬取中国大学排名并以csv格式存储 import requests from bs4 import BeautifulSoup import bs4def get_content(url):try:u ...

  8. python中国最好大学排名_国内大学排名如何?用Python爬取中国大学排名

    国内大学排名如何?用Python爬取中国大学排名准备阶段需要的库robots协议上代码代码框架*获取url信息*解析信息*输出数据*主函数结果 准备阶段 新手入门,不喜勿喷,这篇文章的内容其实也是在中 ...

  9. 第一个爬虫程序之定向爬取中国大学排名(收获良多,不仅仅是写个程序,更是编程的步骤方法)

    第一个爬虫程序之定向爬取中国大学排名(收获良多,不仅仅是写个程序,更是编程的想法) 名称:定向爬取--中国大学排名定向爬取 首先,爬之前,看看你要定向爬取的网站和数据是什么类型的? 打开你要爬取网站, ...

最新文章

  1. 三个数字的运算规律预测
  2. 项目Beta冲刺 用户试用报告
  3. 安规电容能用什么代替_电容系列之安规电容
  4. 【Python CheckiO 题解】Say Hi
  5. kafka server常用核心配置
  6. “最快3个月复制支付宝的核心能力” 解密蚂蚁金服bPaaS
  7. 46多项式01——一元多项式和运算
  8. aardio Access数据库和所有表
  9. Android编程入门-第1天
  10. element实现table表格序号递增的效果
  11. c++ vs2015 播放音乐_三星s20都取消了耳机孔,1k-2k的播放器会成为直推党新选择吗?...
  12. 2020Pyton开发者日线上技术峰会主题:爬虫框架的技术实现与模块应用的经验分享
  13. 数据驱动测试一:使用TestNG进行数据驱动
  14. MSTSC远程连接教程
  15. div+css显示两行或三行文字
  16. grread使用例子 lisp_Autolisp编程心得
  17. List,Set,Map集合总结
  18. Google地图加密算法
  19. python画十字_如何绘制十字线并在pyqtgraph中绘制鼠标位置?
  20. PDF图纸长度怎么测量

热门文章

  1. SwiftUI 精品项目之完整MOOC幕课iOS项目 含服务端 轮播欢迎页面(教程含源码)
  2. 二维表转换为一维列表
  3. 碎片化时代,有哪些高效的学习方法?
  4. 和菜鸟一起学算法之三分法求极值问题
  5. nginx+php 上传含有php脚本的木马图片文件的漏洞解决
  6. 线性代数 --- 线性代数基本定理上(四个基本子空间的维数,行秩=列秩)
  7. redis服务器 本地连接
  8. Java中的.length与.length()
  9. 针对中学生的python_初高中学生Python考试试卷
  10. 盘点自动化设备中的四种常用模组