你对返回值的处理有问题,处理完后不是个标准的json格式,); 不只是最后那一处有,其他地方也有,你直接对全部进行了替换。
可以像这样
r = c.replace('fetchJSON_comment98(','')[:-2]
说是json编码错误,看一下获取到的rest第一行是不是有点问题
def get_source():
base_url = "https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100019233182&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"
headers = {
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
}
resp = requests.get(url=base_url, headers=headers).text
resp_str = resp[resp.index("{"):][:-2]
resp_str_json = json.loads(resp_str)
# print(resp_str_json)
common_list = resp_str_json.get('comments')
for item in common_list:
print(f"content={item.get('content')}")
print(f"creationTime={item.get('creationTime')}")
出现这个错误,是因为返回的内容在执行json.loads中出错,格式不对。
返回的内容处理
方法一:resp[resp.index("{"):][:-2]
返回的内容匹配第一个中括号,然后看到最后的字符串有几个字符
方法二:re.match(r'fetchJSON_comment98((.*));' ,c).group(1)
使用正则去匹配
往采纳