Python 爬取国家统计局相关数据

一,参考 https://www.jianshu.com/p/9827a052da91,对年末总人口进行爬取,同时用matplotlib 进行直方图绘制

代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Mar  1 09:19:33 2019

@author: Lenovo
"""

import requests
import time
import json
import matplotlib.pyplot as plt

#用来获得 时间戳
def gettime():
    return int(round(time.time()*1000))

if __name__=='__main__':
    "一,请求数据"
    #用来定义头部
    headers={}
    #用来传递参数
    keyvalue={}
    #目标网址
    url='http://data.stats.gov.cn/easyquery.htm'
    
    #头部填充
    headers['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64) '\
                            'AppleWebKit/537.36 (KHTML, like Gecko)'\
                            'Chrome/70.0.3538.102 Safari/537.36'
                            
    #参数填充
    keyvalue['m'] = 'QueryData'
    keyvalue['dbcode'] = 'hgnd'
    keyvalue['rowcode'] = 'zb'
    keyvalue['colcode'] = 'sj'
    keyvalue['wds'] = '[]'
    keyvalue['dfwds'] = '[{"wdcode":"zb","valuecode":"A0301"}]'
    keyvalue['k1'] = str(gettime())
    
    # 发出请求,使用get方法,这里使用我们自定义的头部和参数
    r = requests.get(url, headers=headers, params=keyvalue)

    "二,解析数据"
    year=[]
    population=[]
    data=json.loads(r.text)
    data_one = data['returndata']['datanodes']
    for value in data_one:
        if('A030101_sj' in value['code']):
            year.append(value['code'][-4:])
            population.append(int(value['data']['strdata']))
    
    print(year)
    print(population)
    
    "三,绘制数据"
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.bar(year,population)
    plt.xlabel(u'年份')
    plt.ylabel(u'万人')
    plt.title(u'年末总人口')
    plt.show()

效果:

二,同理 经过简单的修改。即可对其它数据,如福利彩票销售总额进行爬取

不同数据 只是在 url参数,和json解析时略微不同

代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Mar  1 13:56:43 2019

@author: Lenovo
"""

# -*- coding: utf-8 -*-
"""
Created on Fri Mar  1 09:19:33 2019

@author: Lenovo
"""

import requests
import time
import json
import matplotlib.pyplot as plt

#用来获得 时间戳
def gettime():
    return int(round(time.time()*1000))

if __name__=='__main__':
    "一,请求数据"
    #用来定义头部
    headers={}
    #用来传递参数
    keyvalue={}
    #目标网址
    url='http://data.stats.gov.cn/easyquery.htm'
    
    #头部填充
    headers['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64) '\
                            'AppleWebKit/537.36 (KHTML, like Gecko)'\
                            'Chrome/70.0.3538.102 Safari/537.36'
                            
    #参数填充
    keyvalue['m'] = 'QueryData'
    keyvalue['dbcode'] = 'hgnd'
    keyvalue['rowcode'] = 'zb'
    keyvalue['colcode'] = 'sj'
    keyvalue['wds'] = '[]'
    keyvalue['dfwds'] = '[{"wdcode":"zb","valuecode":"A0P09"}]'
    keyvalue['k1'] = str(gettime())
    
    # 发出请求,使用get方法,这里使用我们自定义的头部和参数
    r = requests.get(url, headers=headers, params=keyvalue)

    "二,解析数据"
    year=[]
    population=[]
    data=json.loads(r.text)
    data_one = data['returndata']['datanodes']
    for value in data_one:
        if('A0P0902_sj' in value['code']):
            year.append(value['code'][-4:])
            population.append(float(value['data']['strdata']))
    
    print(year)
    print(population)
    
    "三,绘制数据"
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.bar(year,population)
    plt.xlabel(u'年份')
    plt.ylabel(u'亿元')
    plt.title(u'福利彩票销售额')
    plt.show()

效果:

  • 9
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土拨鼠不是老鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值