如何使用Python爬取Yahoo Finance个股社区的评论及回复?
爬取Yahoo Finance个股社区评论及回复的非Selenium方案
我原本打算用Python Selenium爬取Yahoo Finance个股(比如TSLA)社区页面的评论及回复,但实际操作中碰到不少问题:必须手动触发交互才会加载评论下的回复、单条评论没有唯一标识符,还要处理已删除的评论,复杂度很高。后来改用直接调用底层API的方式解决了这些问题,以下是具体实现方法。
核心思路
Yahoo Finance的社区评论由Spot.im提供支持,直接调用Spot.im的官方API可以绕过前端交互限制,直接获取结构化的评论与回复数据,同时每条评论都会带有唯一ID,方便关联回复和处理已删除内容。
实现代码
import requests import json # Spot.im评论API地址 api_url = "https://api-2-0.spot.im/v1.0.0/conversation/read" # 请求参数,可根据需求调整单次获取数量(count)和排序规则(sort_by) payload = json.dumps({ "conversation_id": "sp_Rba9aFpG_finmb$27444752", "count": 250, "offset": 0, "sort_by": "newest" }) # 请求头,需匹配浏览器真实请求的标识信息 api_headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0', 'Content-Type': 'application/json', 'x-spot-id': "sp_Rba9aFpG", 'x-post-id': "finmb$27444752" } # 发送请求并解析响应数据 response = requests.post(api_url, headers=api_headers, data=payload) data = response.json() # 格式化输出结果,便于查看结构 print(json.dumps(data, indent=4))
关键说明
- 参数获取:打开目标个股的社区页面,通过浏览器开发者工具的「网络」面板,筛选Spot.im相关的POST请求,即可从请求体和请求头中提取
conversation_id、x-spot-id、x-post-id这些核心参数。 - 分页处理:如果需要获取更多评论,可循环调整
offset参数(每次累加250),直到API返回的评论列表为空。 - 删除评论处理:API返回的数据中,已删除的评论会带有明确的标识字段(如
deleted),可通过判断该字段来过滤或标记这类内容。 - 请求头维护:User-Agent尽量使用真实浏览器的标识,避免被API拦截;如果请求失败,可检查请求头是否与浏览器实际发送的一致。
内容的提问来源于stack exchange,提问作者Abhishek Joshi
相关产品推荐
相关产品推荐

