简单爬虫,报错了,不知道原因

求帮忙解答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

img

你对返回值的处理有问题,处理完后不是个标准的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)
使用正则去匹配

往采纳