微信号:PythonTZXY

介绍:每天更新,更新python相关的知识.希望诸君有所收获!

今天你教高考生一个装逼神技!利用Python爬取历年高考成绩!

2018-06-13 18:44 Python学习交流



2.爬取数据

1.获取各省的分数线信息



获取各省份的链接:


# 获取分数线 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('h3.ft14') 
 category_list = [] 
 for item in categories: 
 category_list.append(item.text.strip().replace(' ', ''))#替换空格 
 # 获取分数 
 tables = soup.select('h3 ~ 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.数据可视化

爬取数据只是第一步,接下来就要对数据进行处理展示了。从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')

进群:125240963   即可获取源码!!




 
Python学习交流 更多文章 看看资深程序员是如何教你破解图形验证码!这不很简单嘛! 谁当年还没看过几本小说!我用Python爬取全站的的小说! 用Python开发一个银行系统!说不定下一个银行系统就是你开发的! Pycharm是最牛逼的编辑器!小白如何快速上手?这是最完整的教程 如果利用Python爬取B站上千万数据?B站直播都是大屌萌妹吗?
猜您喜欢 android源码大放送5 Python基础教程9:循环嵌套 想看看 Python 全栈课程的试听课么? 布隆过滤器(Bloom Filter)详解 大学各专业分别用一张图解读,你的学科居然是这样的!