YES丶man 2022-01-10 12:21 采纳率: 100%
浏览 173
已结题

爬取某东json评论,JSONDecodeError: Expecting value: line 1 column 1 (char 0)坐等解决方法

报错显示:JSONDecodeError: Expecting value: line 1 column 1 (char 0),具体报错行和报错请看下文,谢谢
还望告知解决方法,不胜感激
代码如下

import requests
import re

#伪装请求头(电商有反爬机制)搞个user_agent
headers={'User-Agent': 
         'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}

#在url里去掉callback=fetchJSON_comment98,获取json格式数据,json为键值对的数据,方便后续操
for page in range(0,51):
    print(f'-------------------------------正在爬取第{page}页------------------------------------------')
    url=f'https://club.jd.com/comment/productPageComments.action?&productId=10027847648122&score=3&sortType=5&page={page}pageSize=10&isShadowSku=0&fold=1'
    response=requests.get(url=url,headers=headers)
    json_data=response.json()
    **'''**

    ## 报错行👆

    **'''**
    comments_list=json_data['comments']
        #for 循环提取数据
    for commnet in comments_list:
        content=commnet['content']                #评论内容
        content=re.sub(r'[\t\n]','',content)     #把评论的换行给删除
        creationTime=commnet['creationTime']      #创建时间
        productColor=commnet['productColor']      #产品款式
        productSize=commnet['productSize']        #产品尺寸
        nickname=commnet['nickname']              #用户名称
        replyCount=commnet['replyCount']          #评论人数
        score=commnet['score']                    #评分
        usefulVoteCount=commnet['usefulVoteCount']#点赞数
    #print(nickname,content,creationTime,score)
        csv_writer.writerow([nickname,content,creationTime,productColor,productSize,replyCount,score,usefulVoteCount])
    #控制延迟,防止反爬
    time.sleep(random.randint(3,5))

报错

JSONDecodeError                           Traceback (most recent call last)
<ipython-input-4-ddb784a6b86d> in <module>
      4     url=f'https://club.jd.com/comment/productPageComments.action?&productId=10027847648122&score=3&sortType=5&page={page}pageSize=10&isShadowSku=0&fold=1'
      5     response=requests.get(url=url,headers=headers)
----> 6     json_data=response.json()
      7     comments_list=json_data['comments']
      8         #for 循环提取数据

C:\ProgramData\Anaconda3\lib\site-packages\requests\models.py in json(self, **kwargs)
    895                     # used.
    896                     pass
--> 897         return complexjson.loads(self.text, **kwargs)
    898 
    899     @property

C:\ProgramData\Anaconda3\lib\json\__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    346             parse_int is None and parse_float is None and
    347             parse_constant is None and object_pairs_hook is None and not kw):
--> 348         return _default_decoder.decode(s)
    349     if cls is None:
    350         cls = JSONDecoder

C:\ProgramData\Anaconda3\lib\json\decoder.py in decode(self, s, _w)
    335 
    336         """
--> 337         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    338         end = _w(s, end).end()
    339         if end != len(s):

C:\ProgramData\Anaconda3\lib\json\decoder.py in raw_decode(self, s, idx)
    353             obj, end = self.scan_once(s, idx)
    354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
    356         return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)
```python



  • 写回答

1条回答 默认 最新

  • 小僵尸打字员 2022-01-10 12:31
    关注

    应该是触发反爬机制了, 改一下请求的代码

    response = requests.get(url=url, headers=headers)
    try:
        json_data = response.json()
    except:
        print(f"err data: ", response.text)
    

    看一下返回的是啥, 大概率是错误页的html;
    解决办法: 1. 在每次请求后sleep一下, 或者换换header头ip啥的, 2. 直接跳过爬下一页;

    有用记得点个采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器