爬虫练手-国家统计局数据获取和分析

进入统计局数据查询页面
爬虫练手-国家统计局数据获取和分析_第1张图片
一般数据查询,然后可以直接下载为电子表格,非常方便。不过若需要左侧栏比较多数据,那么可以查看连接,通过接口请求获取。
爬虫练手-国家统计局数据获取和分析_第2张图片
观察接口,然后用Python模拟数据请求,代码如下:

# 解析URL,提取参数及其值
url = "https://data.stats.gov.cn/easyquery.htm"

params = {
    'm': 'QueryData',
    'dbcode': 'fsnd',
    'rowcode': 'zb',
    'colcode': 'reg',
    'wds': '[{"wdcode":"sj","valuecode":"2021"}]',
    'dfwds': '[{"wdcode":"zb","valuecode":"A0502"}]',
    'k1': str(int(time.time() * 1000)),
    'h': '1'
}

# 发送GET请求
response = requests.get(url, params=params, verify=False)

# 输出响应内容
print(response.text)

data = response.json()

爬虫练手-国家统计局数据获取和分析_第3张图片
这些数据看起来和页面的有些区别,因为这里很多中文都用标识来代替了,若要还原表格,可以查看返回数据中的data["returndata"]["wdnodes"], 然后把code和对应cname 做一个字典匹配。

def handle_data_to_dict(wdnode):
    """
    处理数据字典
    :param wdnode:
    :return:
    """
    zb_dict = {}
    reg_dict = {}
    for item in wdnode:
        if item["wdcode"] == "zb":
            for node in item["nodes"]:
                # print(node["cname"], node["code"], node["unit"])
                zb_dict[node["code"]] = f'{node["cname"]}({node["unit"]})'
        if item["wdcode"] == "reg":
            for node in item["nodes"]:
                # print(node["cname"], node["code"])
                reg_dict[node["code"]] = node["cname"]
    return zb_dict, reg_dict

想获取完整代码可以关注我的公众号,发送国家统计局,获取连接。
爬虫练手-国家统计局数据获取和分析_第4张图片

你可能感兴趣的:(爬虫,数据库,python)