使用Python从指定HTTPS网页下载船舶计划CSV文件的问题咨询
问题分析与解决方案
原有思路可行性判断
你当前的思路存在偏差。你访问的站点是单页应用(SPA),页面采用前端哈希路由,船舶计划数据是页面加载完成后异步调用后端接口拉取的动态数据,站点不存在公开可直接访问的静态CSV文件地址,因此你直接尝试定位CSV下载URL的方式无法实现需求。
可行解决方案
- 第一步:抓包获取真实数据接口
打开浏览器开发者工具(F12),切换到「网络」面板,刷新页面后筛选Fetch/XHR请求,查找返回船舶计划列表的后端接口。这类接口通常返回JSON格式的结构化数据,你可以直接请求该接口获取数据,无需解析CSV。请求时需注意携带和浏览器一致的User-Agent、必要Cookie或授权头,避免被反爬策略拦截。 - 第二步:数据处理与导出
如果你需要将获取到的JSON格式数据转为CSV存储,可以使用pandas的json_normalize()方法将嵌套JSON打平为二维表,再调用to_csv()方法直接导出为本地CSV文件,参考实现代码如下:
import requests import pandas as pd # 替换为抓包获取的真实接口地址 target_api = "YOUR_ACTUAL_API_ENDPOINT" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" # 按需补充其他请求头参数 } resp = requests.get(target_api, headers=headers) resp.raise_for_status() raw_data = resp.json() # 根据实际接口返回结构提取船舶计划列表 vessel_data = raw_data.get("data", []) # 转换为CSV保存 df = pd.json_normalize(vessel_data) df.to_csv("expected_vessel_arrivals.csv", index=False, encoding="utf-8-sig")
- 替代方案:若站点提供手动CSV导出按钮,你可以在点击导出按钮时通过开发者工具抓包获取导出接口的请求地址、参数和鉴权信息,直接调用该接口即可下载CSV文件,无需解析前端页面或处理JSON数据。
注意事项
- 爬取数据前请确认你的行为符合站点
robots.txt规则以及当地数据使用相关法律法规要求,合规使用获取到的数据。 - 若站点配置了反爬机制,可适当增加请求间隔,避免高频请求触发IP封禁。
内容的提问来源于stack exchange,提问作者Eugene P
相关产品推荐
相关产品推荐

