我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python如何爬取历年高考分数线

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python如何爬取历年高考分数线

本篇文章给大家分享的是有关Python如何爬取历年高考分数线,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

粉丝独白

高考已经结束了,相信绝大部分同学都在放松自己了,毕竟压抑了这么久。现在虽然距离高考放榜还有一段时间,可能有一些同学已经迫不及待地想知道自己考的怎样。因此,现在就来爬取高考网上的近几年高考分数线,看一下近几年分数线的变化趋势,从而心里面有个底,这样才能够更加放松的去嗨皮。

使用的工具库

1.总体思路

高考网上,可以查看各省的分数线,其中文理科都有2009-2017年的数据,所以可以直接爬取这些数据下来存到MongoDB中,然后再使用echarts进行绘图展示,从而可以更加直观的看到高考分数线的变化趋势。

Python如何爬取历年高考分数线

2.爬取数据

(1)获取各省的分数线信息

有两种方法可以达到这个目的

1).通过拼接URL链接切换省份,可以得出链接的变化规律:只要替换省份的拼音上去就可以请求到:

http://www.gaokao.com/guangdong/fsx/ 

http://www.gaokao.com/shanghai/fsx/

推荐使用pypinyin模块——汉字拼音转换模块/工具。直接使用lazy_pinyin方法就可以得到各省的拼音。由于返回的是列表,所以还需要处理一下才能使用。

>>> from pypinyin import lazy_pinyin  >>> lazy_pinyin('北京')  ['bei', 'jing']

2).通过获取地区导航中的各省链接,直接得到URL:

Python如何爬取历年高考分数线

获取各省份的链接:

# 获取省份及链接  pro_link = []  def get_provice(url):     web_data = requests.get(url, headers=header)     soup = BeautifulSoup(web_data.content, 'lxml')     provice_link = soup.select('.area_box > a')     for link in provice_link:         href = link['href']         provice = link.select('span')[0].text         data = {             'href': href,             'provice': provice         }         provice_href.insert_one(data)#存入数据库         pro_link.append(href)

(2)爬取分数线

接下来就可以开始爬取分数线了,通过审查元素(如下图),直接使用beautifulsoup来过滤内容。

Python如何爬取历年高考分数线

# 获取分数线  def get_score(url):     web_data = requests.get(url, headers=header)     soup = BeautifulSoup(web_data.content, 'lxml')     # 获取省份信息     provice = soup.select('.col-nav span')[0].text[0:-5]     # 获取文理科     categories = soup.select('h4.ft14')     category_list = []     for item in categories:         category_list.append(item.text.strip().replace(' ', ''))#替换空格     # 获取分数     tables = soup.select('h4 ~ table')     for index, table in enumerate(tables):         tr = table.find_all('tr', attrs={'class': re.compile('^c_\S*')})#使用正则匹配         for j in tr:             td = j.select('td')             score_list = []             for k in td:                 # 获取每年的分数                 if 'class' not in k.attrs:                     score = k.text.strip()                     score_list.append(score)                  # 获取分数线类别                 elif 'class' in k.attrs:                     score_line = k.text.strip()                  score_data = {                     'provice': provice.strip(),#省份                     'category': category_list[index],#文理科分类                     'score_line': score_line,#分数线类别                     'score_list': score_list#分数列表                 }             score_detail.insert_one(score_data)#插入数据库

3.开始爬取

由于有30多个省份,所以这里使用多线程来爬取,可以提高爬取效率。 

if __name__ == '__main__':      header = {         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0',         'Connection': 'keep - alive'         }     url = 'http://www.gaokao.com/guangdong/fsx/'      get_provice(url)     pool = Pool()     pool.map(get_score, [i for i in pro_link])#使用多线程

使用多线程爬取的话,不用1分钟就可以爬完所有的数据了。看,多线程可牛逼了,叉会腰先。

4.数据可视化

爬取数据只是***步,接下来就要对数据进行处理展示了。从mongodb 中查找出数据,对数据进行清洗整理,由于我这里的pyecharts有点问题,所以使用echarts进行展示。

1).筛选省份等信息

直接通过mongodb的find函数,限制查找的内容。

import pymongo  import charts  client = pymongo.MongoClient('localhost', 27017)  gaokao = client['gaokao']  score_detail = gaokao['score_detail']   # 筛选分数线、省份、文理科  def get_score(line,pro,cate):     score_list=[]     for i in score_detail.find({"$and":[{"score_line":line},{"provice":pro},{'category': cate}]}):         score_list = i['score_list']         score_list.remove('-')#去掉没有数据的栏目         score_list = list(map(int, score_list))         score_list.reverse()         return score_list

2).定义相关数据

# 获取文理科分数  line = '一本'  pro = '北京'  cate_wen = '文科'  cate_li = '理科'  wen=[]  li = []  wen=get_score(line,pro,cate_wen)#文科  li=get_score(line,pro,cate_li)#理科   # 定义年份  year = [2017,2016,2015,2014,2013,2012,2011,2010,2009]  year.reverse()

3).折线图展示

series = [     {     'name': '文 科',    'data': wen,     'type': 'line'  }, {     'name': '理科',     'data': li,     'type': 'line',     'color':'#ff0066'  }          ]  options = {     'chart'   : {'zoomType':'xy'},     'title'   : {'text': '{}省{}分数线'.format(pro,line)},     'subtitle': {'text': 'Source: gaokao.com'},     'xAxis'   : {'categories': year},     'yAxis'   : {'title': {'text': 'score'}}     }   charts.plot(series, options=options,show='inline')

这样就可以得到下面的历年分数线趋势图了。当然,可以修改get_score的参数就可以的到其他省份的信息了。

5.预测分数线

通过折线图,可以大概的预测2018年北京高考一本的分数线:文科在550-560分之间;理科在530-540分之间。当然,这只是预测的,如果有特殊情况的话,可能波动会比较大。另外,还可以通过拉格朗日插值法求出今年的分数线,这样比较准确,但是由于过程比较麻烦,所以这里只是目测而已。

以上就是Python如何爬取历年高考分数线,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python如何爬取历年高考分数线

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python如何爬取历年高考分数线

本篇文章给大家分享的是有关Python如何爬取历年高考分数线,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。粉丝独白高考已经结束了,相信绝大部分同学都在放松自己了,毕竟压抑了这么
2023-06-17

如何使用Python爬取历年高考数据并分析

这篇文章给大家分享的是有关如何使用Python爬取历年高考数据并分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。开发工具**Python版本:**3.6.4相关模块:pyecharts模块;以及一些Python
2023-06-15

如何使用Python爬取各大高校数据

这篇文章主要介绍如何使用Python爬取各大高校数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、获取url打开中国教育在线网,按 F12,顶部选择NetWork,选择XHR刷新页面,观察url,通过对Repon
2023-06-15

如何用Python分析2020高考分数和录取情况

如何用Python分析2020高考分数和录取情况,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。“迟到”了一个月的高考终于要来了。正好我得到了一份山东新高考模拟考
2023-06-16

如何Python爬取5K分辨率高清桌面壁纸

本篇文章为大家展示了如何Python爬取5K分辨率高清桌面壁纸,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言相信大家都很需要哪些既好看又能符合自己当时的心情的高清壁纸,很多时候壁纸反应我们当时的
2023-06-02

2021下半年重庆软考分数线如何查询?

  2021下半年重庆软考分数线如何查询?很多考生关注2021下半年软考分数线,赶紧来看下2021下半年重庆软考分数线如何查询吧!  根据往年软考各科目及格分数线来看,编程学习网小编预计2021下半年重庆软考分数线各科目均为45分。根据近两年软考分数线来看,会降低或提高的可能性并不是很大。2021下半年重庆软考分数线预计在
2021下半年重庆软考分数线如何查询?
2024-04-19

如何用python进行scrapy管道学习爬取在行高手数据

如何用python进行scrapy管道学习爬取在行高手数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。爬取目标站点分析本次采集的目标站点为:https://www.zai
2023-06-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录