从国家统计局获取每月更新的月度数据的爬虫方法,供需要的人参考~

         因为自己本身参与经济金融相关工作,对pmi、失业率、货币供应量的数据比较敏感,所以每月会定时去爬取国家统计局更新的数据。首先,先下载一个历史数据表格,这需要在国家统计局注册一个账号,然后就可以下载了,建议下载csv格式,不占空间,读写速度快。当然excel也可以。

        然后,就是自己写的爬虫代码,因为不是专业出身,代码中用了大量的中文,属于个人风格,曾经有人建议,尽量不要在代码中使用中文,个人是希望未来有一天能用全中文写代码,故一直延续了自己的坚持(因人而异)。供大家参考,希望多多支持和点赞~感谢

        

from urllib.request import urlopen
import ssl
import re
import pandas as pd
import time

# ------------------------------函数逻辑部分------------------------------------------

def 抓取(url,码,label):
    global 源
    # 屏蔽ssl检查
    context = ssl._create_unverified_context()
    源 = urlopen(url=url,context=context).read().decode('utf-8')
    # html参数
    数值 = 筛选(label)
    return 数值

def 取数(搜索,源):
    abc = re.search(搜索,源)
    bcd = abc.group()
    return bcd

def 筛选(标识):
    搜索 = []
    for i in 码:
        # 元组 =  标识+ i + '(.*?)' + 日期 + '(.*?)}'
        元组 =  标识+ i + '_sj.' + 日期 + '(.*?)}'
        搜索.append(元组)

    搜索1 = '{(.*?),'
    日期1=日期[:4]+'年'+日期[-2:]+'月'
    数值 = [日期1]
    for i in 搜索:
        中间 = 取数(搜索1,取数(i,源))
        数值.append(中间[8:-1])
    return 数值

def 更新(path):
    读取文件 = pd.read_csv(path,encoding='gbk')
    index = list(读取文件.columns)
    输出 = pd.DataFrame(数值,index=index).T
    输出.to_csv(path, header=None, index=False, mode='a', encoding='gbk')

日期 = input('请输入目标年月:')

#---------------------------------具体执行部分--------------------------------------

# ----------------------------------制造业采购经理指数--------------------------------------------
url = 'https://data.stats.gov.cn/easyquery.htm?m=QueryData&dbcode=hgyd&rowcode=zb&colcode=sj&wds=%5B%5D&dfwds=%5B%7B%22wdcode%22%3A%22zb%22%2C%22valuecode%22%3A%22A0B01%22%7D%5D&k1=1688439769886&h=1'
码 = ['1','2','3','4','5','6','7','8','9','A','B','C','D','E']
数值 = 抓取(url,码,'zb.A0B010')
# 输出设置
path = 'D:\\测试\\统计局数据\\采购经理指数\\制造业采购经理指数.csv'
更新(path)

time.sleep(1)
# ----------------------------------非制造业采购经理指数--------------------------------------------
url = 'https://data.stats.gov.cn/easyquery.htm?m=QueryData&dbcode=hgyd&rowcode=zb&colcode=sj&wds=%5B%5D&dfwds=%5B%7B%22wdcode%22%3A%22zb%22%2C%22valuecode%22%3A%22A0B02%22%7D%5D&k1=1690188110549&h=1'
码 = ['1','2','3','4','5','6','7','8','9','A','B','C']
数值 = 抓取(url,码,'zb.A0B020')
# 输出设置
path = 'D:\\测试\\统计局数据\\采购经理指数\\非制造业采购经理指数.csv'
更新(path)

time.sleep(1)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kakupigs

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

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

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

打赏作者

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

抵扣说明:

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

余额充值