您现在的位置是:亿华云 > IT科技
Python爬取历年高考分数线,帮你预测2018年高考分数线
亿华云2025-10-09 03:27:17【IT科技】3人已围观
简介粉丝独白高考已经结束了,相信绝大部分同学都在放松自己了,毕竟压抑了这么久。现在虽然距离高考放榜还有一段时间,可能有一些同学已经迫不及待地想知道自己考的怎样。因此,现在就来爬取高考网上的近几年高考分数线
粉丝独白
高考已经结束了,历年相信绝大部分同学都在放松自己了,高考毕竟压抑了这么久。分数现在虽然距离高考放榜还有一段时间,线帮可能有一些同学已经迫不及待地想知道自己考的预测怎样。因此,年高现在就来爬取高考网上的考分近几年高考分数线,看一下近几年分数线的数线变化趋势,从而心里面有个底,历年这样才能够更加放松的高考去嗨皮。
使用的分数工具库
beautifulsoup mongodb echarts1.总体思路
在高考网上,可以查看各省的线帮分数线,其中文理科都有2009-2017年的预测数据,所以可以直接爬取这些数据下来存到MongoDB中,年高然后再使用echarts进行绘图展示,考分从而可以更加直观的看到高考分数线的变化趋势。
2.爬取数据
(1)获取各省的分数线信息
有两种方法可以达到这个目的
1).通过拼接URL链接切换省份,可以得出链接的变化规律:只要替换省份的拼音上去就可以请求到:
http://www.gaokao.com/guangdong/fsx/
http://www.gaokao.com/shanghai/fsx/
推荐使用pypinyin模块——汉字拼音转换模块/工具。直接使用lazy_pinyin方法就可以得到各省的拼音。b2b供应网由于返回的是列表,所以还需要处理一下才能使用。
>>> from pypinyin import lazy_pinyin >>> lazy_pinyin(北京) [bei, jing]2).通过获取地区导航中的各省链接,直接得到URL:
获取各省份的链接:
# 获取省份及链接 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来过滤内容。
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_list2).定义相关数据
# 获取文理科分数 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分之间。当然,这只是预测的,如果有特殊情况的话,可能波动会比较大。另外,还可以通过拉格朗日插值法求出今年的分数线,这样比较准确,但是由于过程比较麻烦,所以这里只是目测而已。
很赞哦!(5)
相关文章
- 2、根据用户基础选择访问提供程序。由于互联问题的存在,接入商的选择也非常重要,如果用户群主要在联通,尽量选择联通接入较好的接入商,如果用户群主要在电信,那么选择电信接入较好的接入商。如果用户组位于国家/地区,则选择更好的访问提供程序进行交互。
- 一个罕见的MySQL redo死锁问题排查及解决过程
- 监控和智能运维助力DevOps平台建设
- 我写了一个程序,我难过的时候,电脑会自动给我发猫猫的照片
- 付款完成后,您只需耐心等待,如果您注册成功,系统会提示您。这里需要注意的是,域名是一个即时产品,只有在最终付款成功时才能预订,注册成功后不能更改。
- 2.1 万 Star!一个开源免费、功能强大的视频播放器库
- 机器学习促进大数据分析走向繁荣
- 领导看了我写的关闭超时订单,让我出门左转!
- 当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
- SQL编程之高级查询及注意事项