如何用Python从poder360网站提取筛选生成的dataframe
提取poder360站点数据库数据的实现方案
接口逻辑说明
该站点的查询功能通过POST请求提交筛选参数到后端接口实现,不需要解析前端渲染页面,直接构造对应请求即可获取结构化数据:
- 固定查询接口为
https://poder360.com.br/banco-de-dados/consulta,所有筛选条件以表单格式放在请求体中提交 - 请求头需要添加常规User-Agent避免被反爬拦截,同时指定
Content-Type为application/x-www-form-urlencoded; charset=UTF-8,无额外鉴权参数 - 筛选参数与页面选项的对应关系可以通过浏览器开发者工具抓包确认:调整页面筛选条件点击查询后,在网络面板找到对应
consulta接口的表单数据,复制对应参数的键值对即可适配你的查询需求
Python 实现代码
import requests import pandas as pd # 配置请求头 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", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } # 配置筛选参数,以下为示例值,替换为你需要的查询条件即可 query_params = { "tipo": "pesquisa", "ano": "2024", "estado": "BR", "cargo": "presidente" } # 发送POST请求 resp = requests.post( url="https://poder360.com.br/banco-de-dados/consulta", headers=headers, data=query_params ) resp.raise_for_status() # 解析返回数据为DataFrame result_json = resp.json() df = pd.DataFrame(result_json["result"]) # 输出验证 print(df.head())
注意事项
- 不同筛选条件对应的参数值可以直接在页面下拉框查看,也可以通过抓包获取你需要的条件对应的准确参数,避免参数错误导致返回空数据
- 批量查询时建议添加1-2秒的请求间隔,避免给站点服务器造成过大压力被临时限制访问
- 如果返回数据格式有变化,可以打印返回的JSON结构调整DataFrame构造逻辑即可
内容的提问来源于stack exchange,提问作者abbehusen
相关产品推荐
相关产品推荐

