You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派运行shga项目遇json.decoder.JSONDecodeError,疑config.json有误

树莓派运行shga项目报错排查方案

问题背景

我在树莓派上运行shga项目时启动报错,当前config.json配置内容如下:

{
  "telegram_token": "token",
  "telegram_chat_id": "id",
  "vinted": {
      "urls": [
          "https://www.vinted.fr/vetements?order=newest_first"
      ]
  } ,
  "lbc": {
      "urls": [
          "https://www.leboncoin.fr/annonces/offres/ile_de_france/"
      ],
      "login": "login",
      "password": "password",
      "use_saved_searches": true
  }
}

运行python app.py时触发报错:

(env) pi@raspberrypi:~/shga $ python app.py
Traceback (most recent call last):
  File "/home/pi/shga/app.py", line 46, in <module>
    main()
  File "/home/pi/shga/app.py", line 42, in main
    process_lbc()
  File "/home/pi/shga/app.py", line 29, in process_lbc
    lbc_handler = LBCHandler(lbc_config)
  File "/home/pi/shga/util/lbc.py", line 47, in __init__
    self._login()
  File "/home/pi/shga/util/lbc.py", line 57, in _login
    bearer = json.loads(response.text)["access_token"]
  File "/usr/lib/python3.9/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

排查解决步骤

这个报错说明代码尝试解析空内容为JSON,根源是Le Bon Coin(LBC)登录接口返回的响应为空,而非预期的JSON格式。按以下步骤逐步排查:

1. 修复config.json语法问题并替换占位符

你的配置中vinted块末尾多了一个冗余逗号(},后无同级键),虽然部分解析器能兼容,但建议修正。同时必须替换所有占位符为真实信息:

{
  "telegram_token": "你的Telegram机器人token",
  "telegram_chat_id": "你的Telegram聊天ID",
  "vinted": {
      "urls": [
          "https://www.vinted.fr/vetements?order=newest_first"
      ]
  },
  "lbc": {
      "urls": [
          "https://www.leboncoin.fr/annonces/offres/ile_de_france/"
      ],
      "login": "你的LBC账号",
      "password": "你的LBC密码",
      "use_saved_searches": true
  }
}

可以用本地命令验证JSON合法性:

python -m json.tool config.json

如果输出格式化后的JSON,说明语法无问题;若报错则按提示修正。

2. 调试LBC登录接口响应

修改util/lbc.py中的_login方法,添加调试代码查看请求状态和响应内容:

def _login(self):
    # 保留原有代码,在requests.post后添加以下内容
    response = requests.post(url, data=data, headers=headers)
    print(f"LBC登录请求状态码: {response.status_code}")
    print(f"LBC登录响应内容: {repr(response.text)}")
    # 原有解析代码...

重新运行python app.py,根据输出判断:

  • 若状态码为401:账号密码错误,或LBC启用了二次验证/验证码
  • 若状态码为403:树莓派IP被LBC反爬机制封禁,或请求头模拟度不足
  • 若状态码为200但响应为空:网络波动或接口变更,需检查项目是否有最新更新

3. 检查依赖与网络环境

  • 更新项目依赖:在虚拟环境中执行pip install --upgrade requests
  • 测试网络连通性:运行curl -I https://www.leboncoin.fr,确认返回200状态码
  • 若需代理访问,需在代码中添加代理配置或设置系统全局代理

4. 隔离LBC模块验证

修改app.py的main函数,暂时注释掉process_lbc()调用,只保留Vinted模块测试:

def main():
    process_vinted()
    # process_lbc()

若能正常运行,说明问题完全集中在LBC登录逻辑,与config.json基础格式无关。

内容的提问来源于stack exchange,提问作者elgolmon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:20:29