Python 利用正则获取json中不同的数据类型

作者在编写爬虫时,需获取页面请求返回的JSON数据中特定键对应的值,值存在带引号和不带引号两种情况。作者通过正则表达式快速解决了该问题,并分别展示了两种类型数据获取值的实现及打印结果。

一、场景简述

笔者在写xx爬虫的时候,需要获取页面请求返回的json数据中的某些数据,遇见如下的"key":value("id":value)或者是"key":"value"("rateDate":"value")区别在于value是否带引号,并且需要获取相应的value值,笔者通过正则快速解决

 

二、场景实现

1、"key":value("id":value)类型

主要关注点在于正则部分

page = 1
param = {
    'currentPage': page
}
# 伪装火狐
kv = {'User-Agent': 'Mozilla/5.0'}

response = requests.get(url, params=param, headers=kv)
data = response.text

#通过正则获取"id":value列表
datalist = re.findall(r'\"id\":.*?(?=,)', data)

#打印datalist
print(datalist)

打印结果如下

获取list中的value如下

text = []
for i in range(20):
    #将datalist[i]加入到list列表中
    text.append((datalist[i]))
    
    #利用split 用:符号进行切分
    listid = re.split(':',text[i][3])
    itemid = listid[1]
    print(itemid)
    #每次获取的值就是value了

 

2、"key":"value"("rateDate":"value")类型

datalist2 = re.findall(r'\"rateDate\":\".*?\"', data)
print(datalist2)

打印结果如下

获取list中的value如下

for i in range(20):
    #可以观察以上是以"分隔开因为三个"是注释,所以需要\"进行转义,所以可以利用split进行切分,因为切分的结果在list中
    text.append((datalist2[i].split("\"")[3])
    times = text[i][0]
    print(times)
    #打印结果就是value值了

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值