如何用Python的requests库实现Euronext阿姆斯特丹股市页面的市场过滤
解决Python requests实现EURONEXT市场过滤的问题
首先,你直接POST页面URL的思路不对——这个网站的过滤操作是通过异步AJAX请求后台API完成的,不是直接提交到页面地址。下面是具体的完善步骤和代码:
1. 明确实际请求的接口和参数
通过浏览器开发者工具抓包(F12 -> 网络面板),可以看到点击过滤后会发送一个POST请求到专门的API接口,实际接口地址为:https://live.euronext.com/pd/data/filter/markets/amsterdam/equities
请求需要携带的关键参数(对应MARKET -> EURONEXT AMSTERDAM过滤):
- 市场标识固定为
euronext_amsterdam - 必须带上模拟浏览器的请求头,避免被网站拦截
2. 完善后的代码
import requests # 实际的API接口地址 url = "https://live.euronext.com/pd/data/filter/markets/amsterdam/equities" # 请求头:模拟浏览器环境,避免被反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Referer": "https://live.euronext.com/en/markets/amsterdam/equities/list", "X-Requested-With": "XMLHttpRequest" } # 过滤参数:指定目标市场为EURONEXT AMSTERDAM data = { "filter[markets]": ["euronext_amsterdam"], "filter[limit]": 20, # 每页返回数据条数,可按需调整 "filter[offset]": 0 # 分页偏移量,第一页填0 } # 发送POST请求,用json参数传递结构化数据 response = requests.post(url, json=data, headers=headers) # 处理返回结果 if response.status_code == 200: filtered_data = response.json() print(filtered_data) # 这里可以提取股票名称、代码等具体字段 else: print(f"请求失败,状态码:{response.status_code}")
3. 注意事项
- 如果后续网站接口参数更新,需要重新抓包确认最新的接口地址和参数格式
- 若请求被拦截,可从浏览器当前页面复制Cookie信息,添加到headers中
- 返回的JSON数据包含过滤后的股票列表、分页信息等,可根据需求提取具体字段
内容的提问来源于stack exchange,提问作者Ave
相关产品推荐
相关产品推荐

