广东人事考试网登录网址:https://ggfw.gdhrss.gov.cn/sydwbk/index.do
查看报名统计详情竟然不支持搜索和筛选,想看下报名人数还挺费劲,而且要查看岗位信息还要另外单独去查询。。
中间省略N字的吐槽,开搞
第一步先登录,打开查看报名统计详情,然后按F12,到下面页面。
第二步 把代码里面需要修改的数据进行替换成自己的
第三步,运行,输入对应城市的数字,等待即可,需要时间比较长
第四步 保存成功
import pandas as pd
import requests
import time # 导入 time 模块
def get_exam_data(city_codes, city_code_mapping):
url = 'https://ggfw.hrss.gd.gov.cn/sydwbk/exam/details/spQuery.do'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.1.4031 SLBChan/11',
'Cookie': 'JSESSIONID=lmx52NcUOEKnN7cTqSWfQCoCVC_gJZc5vpfYeBALDNoQPyZvBe8m!-1842907079; _gscu_260182935=99415158p4e5gi43; ../issoYH_MASS_TOKEN=6f80f8a3-0682-4460-9964-d638ae5替换成自己的',
'Host': 'ggfw.hrss.gd.gov.cn',
'Origin': 'https://ggfw.hrss.gd.gov.cn',
'Referer': 'https://ggfw.hrss.gd.gov.cn/sydwbk/center.do?nvt=17114414替换成自己的',
'X-Requested-With': 'XMLHttpRequest'
}
all_exam_data = []
for city_code in city_codes:
city_name = city_code_mapping[city_code]
print(f"正在获取{city_name}的数据...")
page = 1
while True:
data = {
'bfa001': '2412121',
'bab301': city_code,
'page': page,
'rows': 50
}
response = requests.post(url, data=data, headers=headers)
if response.status_code == 200:
try:
page_data = response.json()['rows']
all_exam_data.extend(page_data)
if len(page_data) < 50:
break # Reached the last page
else:
page += 1
except KeyError:
print(f"无法解析 {city_name} 的数据。")
print(response.text) # 打印出返回的内容
break
else:
print(f"Failed to retrieve data for city code: {city_code}. Status code: {response.status_code}")
print(response.text) # 打印出返回的内容
return None
time.sleep(10) # 每次请求后等待10秒
return all_exam_data
def main():
city_code_mapping = {
'99': '省直',
'01': '广州',
'02': '深圳',
'03': '珠海',
'04': '汕头',
'05': '佛山',
'06': '韶关',
'07': '河源',
'08': '梅州',
'09': '惠州',
'10': '汕尾',
'11': '东莞',
'12': '中山',
'13': '江门',
'14': '阳江',
'15': '湛江',
'16': '茂名',
'17': '肇庆',
'18': '清远',
'19': '潮州',
'20': '揭阳',
'21': '云浮'
}
print("请输入需要查找哪个城市的报名统计:")
print("99.省直")
for code in range(1, 22):
print(f"{code:02d}.{city_code_mapping[str(code).zfill(2)]}")
city_code_input = input("请输入城市代码或者回车直接查询所有数据:")
if city_code_input.strip() == "":
print("按下了回车键,默认查询所有数据。")
city_codes = ['99'] + [str(code).zfill(2) for code in range(1, 22)] # 1-21城市代码和99省直代码
else:
if city_code_input in city_code_mapping:
city_codes = [city_code_input]
else:
print("输入的城市代码无效,默认查询所有数据。")
city_codes = ['99'] + [str(code).zfill(2) for code in range(1, 22)] # 默认查询所有数据
exam_data = get_exam_data(city_codes, city_code_mapping) # 传递 city_code_mapping 参数
if exam_data:
df = pd.DataFrame(exam_data)
df = df[['bfe301','aab004', 'aab019', 'aab119' ]]
df.columns = ['岗位代码','招聘单位', '招考人数', '报名人数' ]
city_name = city_code_mapping[city_code_input] # 使用输入的城市代码获取城市名称
file_name = f"{city_name}报名数据.xlsx"
df.to_excel(file_name, index=False)
print(f"数据已保存到 {file_name} 文件中。")
if __name__ == "__main__":
main()