|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 光头大帅比 于 2020-3-17 21:06 编辑
这是我看完小甲鱼爬取网易云评论后效仿爬取京东评论的代码,json文件能够正常获取,但是在使用json.loads()时报错,望各位大佬指出是哪里错了
源代码文本形式如下:
import requests
import json
headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
'refer':'https://item.jd.com/100008348542.html'
}
url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100008348542&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
res = requests.get(url,headers = headers)
print(res.text)
data = json.loads(res.text)
print(data)
由于京东平台评论数据与网易云评论的数据的差异,上述代码获取到的res.text中的数据并不是标准的json格式(简单来说json格式可以理解为python的字典数据用引号括起来形成的字符串),并不能直接利用json.loads()进行转换,需要对该数据进行清洗,将最前面的 “fetchJSON_comment98(” 以及最后面的 “)” 去掉才是标准的json格式,以下是我在大佬指点下修改的代码:
import requests
import json
headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
'refer':'https://item.jd.com/100008348542.html'
}
url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100008348542&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
res = requests.get(url,headers = headers)
s1 = res.text.split('fetchJSON_comment98(')[1]
finalres = s1[:-2]
print('此时的数据类型是:')
print(type(finalres))
print('现在进行json.loads()转换')
data = json.loads(finalres)
print('转换完了,此时数据类型是:')
print(type(data))
从结果可以看出,成功进行了数据转换获得了字典类型
|
|