You need to enable JavaScript to run this app. Python爬虫爬取检查元素不显示的下拉菜单数据问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Python爬虫爬取检查元素不显示的下拉菜单数据问题求助

爬取目标数据的实现方案

问题本质

你访问的网站采用分层静态JSON存储选举数据,后续选区、投票站层级的内容不需要通过页面元素提取,直接按照规则拼接请求对应JSON文件即可获取。

数据路径规则

  • 州级基础数据:https://chanakyya.com/Chanakya/{州英文标识}/{州英文标识}.json(你现有代码已实现该层请求)
  • 州下辖所有议会选区列表:https://chanakyya.com/Chanakya/{州英文标识}/ac.json,该文件中存储了所有选区的显示名称、编码等信息
  • 单个选区下的所有投票站数据:https://chanakyya.com/Chanakya/{州英文标识}/{选区编码}/{选区编码}.json,你需要的Ajgara(SC)的投票站数据就存放在对应路径的该文件中

可直接运行的修改后代码

import requests
import pandas as pd
import choice

# 获取州列表
states = requests.get('https://chanakyya.com/Chanakya/states.json').json()
state_list = [x['stateDisplayName'] for x in states]
# 选择Uttar Pradesh
state_choice = choice.Menu(state_list).ask()
state_info = [x for x in states if x['stateDisplayName'] == state_choice][0]
state_name = state_info['stateName']

# 获取该州下所有议会选区列表
ac_list_url = f'https://chanakyya.com/Chanakya/{state_name}/ac.json'
ac_list = requests.get(ac_list_url).json()
ac_display_list = [x['acDisplayName'] for x in ac_list]
# 选择Ajgara(SC)
ac_choice = choice.Menu(ac_display_list).ask()
ac_info = [x for x in ac_list if x['acDisplayName'] == ac_choice][0]
ac_code = ac_info['acCode']

# 获取对应选区的所有投票站数据
booth_url = f'https://chanakyya.com/Chanakya/{state_name}/{ac_code}/{ac_code}.json'
booth_data = requests.get(booth_url).json()

# 解析并输出投票站表格
tables = {}
for key, value in booth_data['ELECTION_DATA']['acLevelData'].items():
    table = pd.DataFrame(value)
    tables[key] = table

for key, table in tables.items():
    print(f'*** {key} ***')
    print(table)

额外说明

  • 运行前需确保已安装依赖:执行pip install requests pandas choice即可
  • 如果不需要手动选择,直接固定获取Ajgara(SC)的数据,可删除选择逻辑,直接写死state_choice为Uttar Pradesh、ac_choice为Ajgara(SC)即可

内容的提问来源于stack exchange,提问作者Kanishk Tolani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 12:21:03