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

如何删除Requests爬取结果中JSON数据前的多余HTML内容

问题原因

str.lstrip(characters)方法的入参是待移除的字符集合,不是要匹配的目标子串。你调用lstrip('{')只会删除字符串开头连续出现的{字符,完全无法实现删除{之前所有内容的效果,这是方法调用错误导致的问题。

可行解决方案
  • 方案1:定位JSON起始位置截取(适合仅前缀有冗余的场景)
    先找到目标JSON第一个字符的索引,再从该位置截取完整JSON字符串后解析即可,适配JSON对象/数组两种格式:

    import requests
    import json
    
    resp = requests.get("你的请求地址")
    resp_text = resp.text
    # 若目标JSON是数组格式,将下面的'{'替换为'['即可
    json_start_idx = resp_text.find('{')
    if json_start_idx != -1:
        pure_json_text = resp_text[json_start_idx:]
        json_data = json.loads(pure_json_text)
    else:
        # 自定义未找到JSON的异常处理逻辑
        json_data = None
    
  • 方案2:正则匹配完整JSON结构(适合前后都有冗余内容的场景)
    如果JSON前后都有无关内容,可通过正则匹配最外层的JSON结构,注意开启re.DOTALL参数让.匹配换行符:

    import requests
    import json
    import re
    
    resp = requests.get("你的请求地址")
    # 匹配JSON对象的正则,若为数组格式将正则改为r'\[.*\]'即可
    json_pattern = re.compile(r'\{.*\}', re.DOTALL)
    match_result = json_pattern.search(resp.text)
    if match_result:
        pure_json_text = match_result.group()
        json_data = json.loads(pure_json_text)
    else:
        json_data = None
    
  • 方案3:固定冗余内容定向清理(适合冗余格式固定的场景)
    如果多次请求验证前缀的HTML报错内容格式固定,可直接通过替换、拆分字符串的方式剔除冗余,匹配精度最高,不会误识别JSON内容里的特殊符号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:18:03