python js返回 json_[python爬虫]把js转化成json

有一个优秀的库可以使用————demjson

目标链接

请求上面链接,会得到如下图的一个js文件

我们需要把这个js文件转成为dict,方便提取其中需要的字段(这在爬虫任务中非常常见)

失败的方法

传统方法

通常转js文件为dict的过程:

1.先通过切片掐头去尾,去掉头部的 “callarea(” 和尾部的 “)” 。

2.再次导入json这个库,使用loads,json.loads(resposne.text[9:-1]),实现json转dict。

但是,这个方法在这里行不通。

import requests

import json

url = 'http://fcd.5173.com/commondata/Category.aspx?type=area&cache=&id=20c8bbc1b9794fc98bd96859624d4769&jsoncallback=callarea'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',

}

resposne = requests.get(url, headers=headers)

print(json.loads(resposne.text[9:-1]))

错误原因

js文件并不一定是json的超集,这此处的js文件key不包含双引号,value中的内容是单引号。

上诉方法行得通的前提是这个js需要时json的超集,key和value都由双引号包围。

天无绝人之路

通过demjson可以一步到位

import requests

import demjson

url = 'http://fcd.5173.com/commondata/Category.aspx?type=area&cache=&id=20c8bbc1b9794fc98bd96859624d4769&jsoncallback=callarea'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',

}

resposne = requests.get(url, headers=headers)

for item in demjson.decode(resposne.text[9:-1]):

id = item.get('id')

name = item.get('name')

print(id, name)

得到如下结果

写代码千万不要睡着了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值