目录

前言

一、用到的python库

二、准备工作

1.找个有近几年QS排名的网站

2.找到数据

3.分析json结构

三、编写代码

四、结果呈现

总结


前言

不久后要做大学宣讲,顺便捡一下爬虫的语法,就写了这个爬虫的代码。记录一下免得以后又忘了。


一、用到的python库

requests(爬虫基本库)

re(正则表达式库,在本文中也可用内置的find方法代替)

pygal(交互式画图库)

以上库均可用"pip install name"(name即上述库的名称)安装

如果用的是anaconda环境管理,将pip改为conda

二、准备工作

1.找个有近几年QS排名的网站

我这里找的是QS在中国的官网:世界大学排名 | QSChina(但说实话数据有点少,只有4年的)

2.找到数据

通过检查找到网络后点击完整榜单,捕获数据。

找一下后发现数据在这个网址中,复制URL。(还有要加上自己浏览器的User-Agent进行伪装)

注意:这里请求的方法是GET但爬虫时用requests.get()方法会报错,应该用requests.post()。

3.分析json结构

​​​​​​​

打红框的就是我们要的目标数据,其中uni除了学校名是中文,其余均英文字符。

所以可以用re的语法提取出来:

reg=re.compile('[\u4E00-\u9FA5]+')

这个是匹配中文字符的表达式。

(但因为有的学校的名称是以英文或其他语言呈现的,所以最好爬取海外知名院校和中国院校)

三、编写代码

# This is a py file to crawl the ranks of your university in QS.
import requests
import re
import pygaldef getJson(url):r=requests.post(url,headers=headers).json()return rdef parse(dict):D={}reg=re.compile('[\u4E00-\u9FA5]+')# This line is to find the Chinese characters, so the university's name should be in Chinese, then you can get the QS rank of it. for d in dict['data']:try:name=re.search(reg,d['uni']).group()# If the uni name is in English, it will return None. Use the group() to None will get an error.if name in uName:D[name]=[int(d['overall_rank'])]if len(D)==len(uName):breakexcept:passreturn Ddef getuName():s=input("请将你想查的大学名称用中文输入(中间用‘,’隔开):")#, is the comma in ChineseL=s.split(',')return Ldef darwLine():line=pygal.Line()for i in uName:line.add(i,dataDict[i])line.x_labels=yearline.y_title="QS排名"line.x_title="年份"line.title="近四年QS排名"line.legend_at_bottom=Trueline.render_to_file('learning scrapy\\crawl the ranks of QS\\查询结果.svg')# Before you run this file, you should change the above line to your path.def main():global uNameuName=getuName()for i in range(3,-1,-1):if i==3:global dataDictdataDict=parse(getJson(url[i]))else:D=parse(getJson(url[i]))for name in uName:dataDict[name].append(D[name][0])darwLine()if __name__ == '__main__':url=['https://www.qschina.cn/sites/default/files/qs-rankings-data/cn/2122636_indicators.txt','https://www.qschina.cn/sites/default/files/qs-rankings-data/cn/2057712_indicators.txt','https://www.qschina.cn/sites/default/files/qs-rankings-data/cn/914824_indicators.txt','https://www.qschina.cn/sites/default/files/qs-rankings-data/cn/397863_indicators.txt']headers={'user-agent': you need to add it}year=[2019,2020,2021,2022]main()

四、结果呈现

最后将svg文件在浏览器中打开。

中国顶尖学府:

还有在武汉备受争议的华科武大之争:

(QS排名不完全代表教学水平高低,仅作参考)


总结

本文介绍了排名类爬虫流程,并附上了查询近四年QS排名的代码,欢迎大家在评论区交流。

python爬虫+pygal交互式可视化爬取大学QS排名相关推荐

  1. python爬虫(一)爬取豆瓣电影排名前50名电影的信息

    python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...

  2. python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片

    Python 爬虫系列教程一爬取批量百度图片https://blog.csdn.net/qq_40774175/article/details/81273198# -*- coding: utf-8 ...

  3. python爬虫对炒股有没有用_使用python爬虫实现网络股票信息爬取的demo

    实例如下所示: import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url ...

  4. python爬虫 豆瓣影评的爬取cookies实现自动登录账号

    python爬虫 豆瓣影评的爬取cookies实现自动登录账号 频繁的登录网页会让豆瓣锁定你的账号-- 网页请求 使用cookies来实现的自动登录账号,这里的cookies因为涉及到账号我屏蔽了,具 ...

  5. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  6. 《python爬虫实战》:爬取贴吧上的帖子

    <python爬虫实战>:爬取贴吧上的帖子 经过前面两篇例子的练习,自己也对爬虫有了一定的经验. 由于目前还没有利用BeautifulSoup库,因此关于爬虫的难点还是正则表达式的书写. ...

  7. Python 爬虫 中国行政区划信息爬取 (初学者)

    Python 爬虫 中国行政区划信息爬取 (初学者) 背景 环境准备 代码片段 1.定义地址信息对象 2.地址解析对象 2.1 获取web信息 2.2 web信息解析 2.3 区划信息提取 2.4 省 ...

  8. python爬虫学习 之 定向爬取 淘宝商品价格

    python爬虫学习 之 定向爬取 淘宝商品价格 import requests import redef getHTMLText(url):try:r = requests.get(url, tim ...

  9. python爬虫股票市盈率_使用python爬虫实现网络股票信息爬取的demo

    实例如下所示: import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url ...

最新文章

  1. 镁光ssd管理工具 linux,在 SSD 上使用 Btrfs 文件系统的相关优化
  2. Windows内存管理 - 隐藏在new和malloc背后的heap
  3. emacs 入门教程,菜单汉化,配置文件等杂乱文章
  4. Python机器学习:逻辑回归003逻辑回归的损失函数的梯度
  5. zipparameters 使用_zip4j的简单运用
  6. MFC更改环境目录可执行文件目录下继承的值
  7. 8数码问题-搜索-双向BFS/A*算法
  8. 蚂蚁课堂视频笔记思维导图-4期 一、微服务技术
  9. 好多网友都不知道怎么阅读Linux内核源码,这篇让你快速理解
  10. 曲线运动与万有引力公式_不要再追问库库了,物理公式大全拿走!
  11. 服务器基线扫描修复,怎么对服务器进行基线和漏洞扫描
  12. android:style/theme.holo.light,Galaxy Nexus上的Android Theme.Holo.Light在模拟器没有的时候有灰色背景...
  13. 使用docker运行mysql:5.7
  14. ElasticSearch已有字段添加Fields
  15. linux下安装asm数据库,Linux下ASM实例的安装
  16. GIS入门进阶之015
  17. spec文件知识整理
  18. 通过httpurlconnection发带图片的文件
  19. 一个描述二氧化硅的两体势能BKS
  20. UVa - 11283 - PLAYING BOGGLE

热门文章

  1. MGD【知识蒸馏】【expand】
  2. Android线程间通信机制
  3. java静态代码检测 pmd,PMD使用与代码质量
  4. k8s实战之部署PHP/Java网站
  5. 四、OpenCV颜色空间——HSV颜色模型
  6. 怀旧服服务器怎么调整显卡性能,游戏老是卡帧怎么办?教你如何设置显卡性能,从此和卡顿说拜拜~...
  7. 编写程序实现披萨的制作
  8. 泰勒展开求π近似值(复杂循环)
  9. Day 5 Soot使用笔记
  10. 2010年最骚最有深度的100句话!