如何循环多个URL调用同一PageSpeed API提取JSON返回数据
代码修正方案
核心修正点
- 将
response_url拼接语句中误用的整个URL列表变量page_URL,替换为每次循环遍历得到的单条URL变量url即可解决请求地址拼接错误问题 - 额外优化:将固定不变的常量(API密钥、基础请求地址、策略参数)移到循环外部,避免每次循环重复赋值;补充异常捕获逻辑,避免单条URL请求失败或返回字段缺失导致整个脚本终止运行;补充缺失的
requests库导入语句
修正后完整可运行代码
import requests # 常量统一放在循环外定义 API_Key = "xyz" baseURL = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=" strategy = "mobile" page_URL = ['https://www.usatoday.com','https://www.capitalone.com'] for url in page_URL: try: # 拼接请求地址时使用循环变量url response_url = baseURL + url + '&key=' + API_Key + '&strategy=' + strategy response = requests.get(response_url).json() # 提取指标 url_id = response['originLoadingExperience']['id'] overall_score = response['lighthouseResult']['categories']['performance']['score']*100 fcp_score = response['originLoadingExperience']['metrics']['FIRST_CONTENTFUL_PAINT_MS']['percentile']/1000 fid_score = response['originLoadingExperience']['metrics']['FIRST_INPUT_DELAY_MS']['percentile'] lcp_score = response['originLoadingExperience']['metrics']['LARGEST_CONTENTFUL_PAINT_MS']['percentile']/1000 cls_score = response['originLoadingExperience']['metrics']['CUMULATIVE_LAYOUT_SHIFT_SCORE']['percentile']/100 # 可在此处添加打印或存储指标的逻辑 print(f"地址:{url_id} 性能得分:{overall_score} FCP:{fcp_score}s FID:{fid_score}ms LCP:{lcp_score}s CLS:{cls_score}") except Exception as e: print(f"处理URL{url}时出错:{str(e)}")
内容的提问来源于stack exchange,提问作者VRapport
相关产品推荐
相关产品推荐

