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

Python无法访问JSON的data属性 写入CSV仅表头无内容如何解决

问题原因及解决方法

你遇到的仅写入表头无数据的问题,核心原因大概率是以下几点,按优先级排查修改即可:

1. 校验搜索词列表有效性

你当前读取search_terms.txt的逻辑没有做非空校验,也未自动关闭文件句柄,如果文件路径错误、文件内容全是空行,会导致terms列表为空,后续遍历搜索的逻辑完全不执行,自然没有数据写入。
修改后读取文件的代码如下:

terms = []
# 用with上下文管理器自动关闭文件,避免资源泄漏
with open("search_terms.txt", "r", encoding="utf-8") as f:
    for line in f:
        stripped_line = line.strip()
        # 跳过空行
        if stripped_line:
            terms.append(stripped_line)

# 校验搜索词列表非空
if not terms:
    raise Exception("未加载到有效搜索词,请检查search_terms.txt文件路径和内容")

2. 修复URL构造逻辑

你当前手动拼接URL的方式没有对搜索词做URL编码,如果搜索词包含空格、&、#等特殊字符,会导致请求参数无效,API返回结果无匹配内容,没有data字段。修改请求逻辑,用requests自带的params参数自动处理编码:

def search_twitter(query, bearer_token = BEARER_TOKEN):
    headers = {"Authorization": "Bearer {}".format(bearer_token)}
    url = "https://api.twitter.com/2/tweets/search/recent"
    # 用params参数自动做URL编码,避免特殊字符导致请求异常
    params = {
        "query": query,
        "tweet.fields": "text"
    }
    response = requests.get(url, headers=headers, params=params)
    print(f"请求{query}的响应状态码:{response.status_code}")
    if response.status_code != 200:
        raise Exception(response.status_code, response.text)
    return response.json()

3. 增加data字段存在性校验

当搜索词无匹配推文时,Twitter API返回的JSON中不会包含data字段,直接访问会抛出KeyError,修改写入CSV的循环逻辑,增加校验:

with open("tweets.csv", "w", newline="", encoding="utf-8") as f_out:
    writer = csv.writer(f_out)
    writer.writerow(["Search Term", "Tweet"])

    for term in terms:
        json_response = search_twitter(query=term, bearer_token=BEARER_TOKEN)
        # 先判断data字段存在且不为空再遍历
        if "data" in json_response and len(json_response["data"]) > 0:
            for entry in json_response["data"]:
                writer.writerow([term, entry["text"]])
        else:
            print(f"搜索词[{term}]无匹配结果,跳过写入")

额外注意事项

  • 确认你的Bearer Token已开通Twitter API v2的搜索权限,且未超出请求频次限制
  • 运行代码时观察控制台打印的响应内容,确认API是否正常返回推文数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:09:04