import requests
import time
import numpy as np
import pandas as pd
# 头文件
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537',
'Content-Type': 'application/xhtml+xml; charset=UTF-8',
}
# 代理IP
proxies = {
'http': 'http://139.0.28.18:8080',
# 'https': 'http://1.179.183.86:8080',
}
# 数据集合
infos = {
# 城市 下一级
'city': [],
# 公司名字 下一级
'company': [],
# 职业名称
'jobName': [],
# 薪水
'salary': [],
# 工作经验 下一级
'workingExp': [],
# 公司规模 下一级
'companySize': [],
# 教育程度 下一级
'eduLevel': [],
# 性质(民营等) 下一级
'type': [],
# 公司领域 下一级
'jobType': [],
# 是否全职
'emplType': [],
# 福利 要循环取值
'welfare': [],
}
# 基础链接
url = 'https://fe-api.zhaopin.com/c/i/sou?'
# 需求链接
base_url = 'start=300&pageSize=60&cityId=489&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=数据分析师&kt=3'
# 翻页 看pagesize可知 页码总数有60页
for i in range(1, 61):
print(i)
# 休眠一段时间
time.sleep(np.random.rand()*15)
# 需要的参数
data = {
"p": str(i),
"pageSize": "60",
"jl": "489",
"kw": "数据分析师",
"kt": "3"
}
# 真实链接
real_url = url + base_url
# 第一次忘记加上data
response = requests.get(real_url, headers=headers, proxies=proxies, data=data)
# 数据json化
html = response.json()
# 找到信息结点
results = html['data']['results']
for result in results:
infos['city'].append(result['city']['display'])
infos['company'].append(result['company']['name'])
infos['companySize'].append(result['company']['size']['name'])
infos['jobName'].append(result['jobName'])
infos['eduLevel'].append(result['eduLevel']['name'])
infos['emplType'].append(result['emplType'])
# 循环福利
welfares = result['welfare']
base_welfare = []
try:
for welfare in welfares:
base_welfare.append(welfare)
except Exception as e:
print(e)
print('这家公司没有福利')
infos['welfare'].append(base_welfare)
infos['jobType'].append(result['jobType']['display'])
infos['workingExp'].append(result['workingExp']['name'])
infos['type'].append(result['company']['type']['name'])
infos['salary'].append(result['salary'])
# 转化数据
ddata = pd.DataFrame(infos)
# 保存为CSV文件
ddata.to_csv('zhilian.csv', index=False, encoding='gb18030')