Python执行无print却终端输出,无法捕获路透目标JSON数据求助
问题解决方法
问题原因
你请求的https://www.reuters.com/markets/quote/USDEUR=X/返回的是HTML网页,不是JSON数据。直接调用response.json()会触发解析异常,异常信息会直接输出到终端,自然也没法获取目标的market_data。
解决方案
要获取目标JSON数据,需要解析页面中的脚本内容,提取出包含market_data的部分。下面是修正后的代码:
import requests from bs4 import BeautifulSoup import json url = "https://www.reuters.com/markets/quote/USDEUR=X/" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # 找到包含market_data的脚本标签 script_tags = soup.find_all("script") target_data = None for script in script_tags: if script.string and "market_data" in script.string: # 提取JSON部分并解析 raw_data = script.string.split("window.__INITIAL_STATE__ = ")[1].split(";")[0] parsed_data = json.loads(raw_data) target_data = parsed_data["marketData"]["market_data"] break if target_data: # 此时target_data就是你需要的目标数据,可直接赋值使用 print(target_data) else: print("未找到目标数据")
代码说明
- 用
BeautifulSoup解析HTML页面,遍历所有脚本标签,定位包含market_data的脚本内容。 - 从脚本中提取出页面初始化状态的JSON字符串,解析后就能拿到你需要的
market_data数组,直接赋值给变量即可使用。
内容的提问来源于stack exchange,提问作者Bitra Hemanth
相关产品推荐
相关产品推荐

