python爬虫 爬取国家数据网站10各省份GDP

该博客主要展示了如何使用Python爬虫从国家数据网站获取2011年至2020年各省份GDP数据,并进行数据整理与可视化。通过`requests`、`pandas`和`matplotlib`等库,实现了数据爬取、存储到Excel以及绘制柱状图展示。代码中包含了错误处理和时间戳功能,确保了爬取的稳定性和效率。
部署运行你感兴趣的模型镜像
import requests
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
import warnings
import json
import time
import numpy as np


def main():
    baseurl = "https://data.stats.gov.cn/easyquery.htm?cn=E0103"
    warnings.filterwarnings('ignore')
    data_list, name_list = get_data(baseurl)
    df = get_list(data_list, name_list)
    draw(df)


def get_data(baseurl):  #解析爬取的网站数据
    data_list = []
    name_list = []
    js = ask_url(baseurl)
    for value in js['returndata']['datanodes']:
        data_list.append(value['data']['strdata'])
    list_0 = js['returndata']['wdnodes'][1]['nodes']
    for i in range(len(list_0)):
        name_list.append(list_0[i]['cname'])
    return data_list, name_list


def get_list(data_list, name_list): #将解析后的数据储存在xlsx文件里
    eval_list=[]
    for i in data_list:
        eval_list.append(float(i))
    array_data = np.array(eval_list).reshape(31, 10)
    df = pd.DataFrame(array_data, index=[name_list], columns=['2020', '2019', '2018', '2017', '2016','2015', '2014',
                                                                '2013', '2012', '2011'])
    df.to_excel('2011年-2020年各省份GDP.xlsx')
    return df


def getTime():  #时间戳
    return int(round(time.time() * 1000))


def ask_url(url):   #爬取国家数据网站
    while True:
        try:

            head = {
                "User-Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko)"
                          " Chrome / 96.0.4664.110Safari / 537.36"
            }  # 用户代理,模拟浏览器访问网站服务器
            key = {'m': 'QueryData', 'dbcode': 'fsnd', 'rowcode': 'reg', 'colcode': 'sj',
                   'wds': '[{"wdcode":"zb","valuecode":"A020101"}]', 'dfwds': '[{"wdcode":"sj","valuecode": "LAST10"}]',
                   'k1': str(getTime())
                   }
            html = requests.get(url, headers=head, verify=False, params=key)
            js = json.loads(html.text)
            break
        except:
            time.sleep(2)
            print("服务器繁忙")
    return js


def draw(df):   #运用matplotlib 画图
    matplotlib.rcParams['font.family'] = 'SimHei'
    df.plot(kind='bar', title='2011-2020年各省份GDP数据')
    plt.show()


if __name__ == "__main__":
    main()

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值