Super_Employee/wubatongcheng.py
2024-08-18 01:06:51 +08:00

224 lines
11 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# main_script.py
import requests
import json
from UserDefined import wubatongcheng_poststate, wubatongcheng_clientid, wubatongcheng_Search, deviceName, \
wubatongcheng_cityid, wubatongcheng_Chatstate, wubatongcheng_postnumber
from system import successful_deliveries, wubatongcheng_SearchUrl, wubatongcheng_PostUrl, wubatongcheng_Chat
def run_wubatongcheng_script():
# 初始化变量
wubatongcheng_successCount = 0
wubatongcheng_errorCount = 0
wubatongcheng_findCount = 0
page = 1
# 请求头
wubatongcheng_headers = {
'User-Agent': "okhttp/3.11.0",
'Connection': "Keep-Alive",
'Accept-Encoding': "gzip,deflate",
'net-msg-id': "",
'x-microservice-name': "APMS",
'apkbus': "",
'coordinateType': "10",
'official': "true",
'xxzl-cid': "",
'ua': "21051182C",
'uuid': "",
'dirname': "sz",
'productorid': "1",
'jumpextra': "{\"spm\":\"\",\"utm_source\":\"\"}",
'marketchannelid': "1366",
'osv': "14",
'58clientid': wubatongcheng_clientid,
'brand': "Xiaomi",
'apn': "WIFI",
'deny': "1.875",
'firstopentime': "",
'netType': "wifi",
'rnsoerror': "-1",
'switchrecommend': "",
'version': "13.10.2",
'jumppid': "",
'push': "0",
'homemodel': "normal",
'currentcid': "",
'buildtime': "",
'bangbangid': "",
'xxwxtoken': "",
'cid': wubatongcheng_cityid,
'ajkAuthTicket': "",
'xxzlsid': "",
'scale': "1",
'guestImei': "",
'platform': "android",
'openudid': "",
'manufacturer': deviceName,
'id58': "",
'PPU': "",
'sh': "2500",
'osarch': "arm64-v8a",
'xxzlcid': "",
'webua': "Mozilla/5.0 (Linux; U; Android 14; "+deviceName+" Build/UQ1A.240105.004.A1; wv) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/534.30",
'bundle': "com.wuba",
'uniqueid': "",
'totalsize': "",
'xxaqrid': "",
'xxwxtokenp': "",
'product': "58app",
'sw': "",
'os': "android",
'vlocalid': "",
'r': "",
'xxzl_deviceid': "",
'xxzl_smartid': "",
'xxzl_cid': "",
'58ua': "58app",
'clinkid': "",
'maptype': "2",
'tp': "",
'channelid': "",
'jobreferer': "",
'bgtype': "58app",
'ZPBEntryLogType': "",
'xxzlbbid': "",
'xxzlxxid': "",
'zpbpubver': "2.10.0",
'gsparam': ""
}
while True:
wubatongcheng_Search['page'] = str(page) # 设置当前页码
# response = requests.get(yizhanchi_SearchUrl, params=yizhanchi_Search, headers=headers)
# 发送 GET 请求
wubatongcheng_SearchResponse = requests.get(wubatongcheng_SearchUrl, params=wubatongcheng_Search, headers=wubatongcheng_headers)
# payload = json.dumps(wubatongcheng_Search)
# wubatongcheng_SearchResponse = requests.post(wubatongcheng_SearchUrl, data=payload, headers=wubatongcheng_headers)
# print(wubatongcheng_SearchResponse.text)
# 检查请求是否成功
if wubatongcheng_SearchResponse.status_code == 200:
# data = wubatongcheng_SearchResponse.json()
try:
data = wubatongcheng_SearchResponse.json()
items = data['jobList']['data']
if wubatongcheng_successCount>=wubatongcheng_postnumber:
break
if not items:
break
uuid_list = [item['infoID'] for item in items]
company_list = [item['qyname'] for item in items]
job_list = [item['title'] for item in items]
salary_desc_list = [item['xinzi'] for item in items]
attraction_list = [item['signsList'] for item in items]
city_list = [item['quyu'] for item in items]
print("------------58同城-------------")
print("在58同城平台找到以下岗位即将为您投递:")
print("---------------------------------")
for uuid, company, job, salary_desc, attraction, city in zip(uuid_list, company_list, job_list, salary_desc_list, attraction_list, city_list):
attraction_str = json.dumps(attraction, ensure_ascii=False)
# group_items = group_data['msg']['resume']
# deliver_able_list = [item['deliver_able'] for item in group_items]
# group_list = [item['group_uuid'] for item in group_items]
# deliver_able_online = deliver_able_list[0] if len(deliver_able_list) > 0 else False
# deliver_able_local = deliver_able_list[1] if len(deliver_able_list) > 1 else False
wubatongcheng_findCount=wubatongcheng_findCount + 1
print(f"------------第{wubatongcheng_findCount}家-------------")
print(f"UUID: {uuid}")
print(f"公司: {company}")
print(f"城市: {city}")
print(f"岗位: {job}")
print(f"薪资: {salary_desc}")
print(f"福利: {attraction_str}")
# print(f"在线简历投递状态: {'可投递' if deliver_able_online else '不可投递'}")
# print(f"本地简历投递状态: {'可投递' if deliver_able_local else '不可投递'}")
print("-------------Result---------------")
# usegroup = None # 初始化 usegroup
# if (wubatongcheng_poststate == 1 and deliver_able_online) or (wubatongcheng_poststate == 2 and not deliver_able_local and deliver_able_online):
# usegroup = group_list[0]
# elif (wubatongcheng_poststate == 1 and not deliver_able_online and deliver_able_local) or (wubatongcheng_poststate == 2 and deliver_able_local):
# usegroup = group_list[1]
# elif (wubatongcheng_poststate == 0 and (deliver_able_online or deliver_able_local)):
# usegroup = None
if (wubatongcheng_Chatstate==1):
wubatongcheng_Chatpayload = "infoId=57464116683181&scene=job_detail&tjfrom=app_list_search_mxn__143164519225947239129717587__723395933378117632__tegptplus__I%2CL__4____null__eyJyIjp7InNwbSI6IiIsImluZm9pZCI6IjU3NDY0MTE2NjgzMTgxIiwic2xvdCI6ImFwcF9saXN0X3NlYXJjaF9teG4iLCJ0eXBlIjoidGVncHRwbHVzIiwic2lkIjoiMTQzMTY0NTE5MjI1OTQ3MjM5MTI5NzE3NTg3IiwidXRtIjoiIiwiY2lkIjoiMTM2NiJ9LCJ0IjoxLCJ2IjoxLCJ3Ijp7InNsb3RfZnJvbSI6ImFwcF9taWRkbGVfc2VhcmNoIn19&platform=3"
wubatongcheng_ChatResponse = requests.post(wubatongcheng_Chat, data=wubatongcheng_Chatpayload, headers=wubatongcheng_headers)
data = wubatongcheng_ChatResponse.json()
wubatongcheng_wubatongcheng_Chatstate = data['message']
if wubatongcheng_wubatongcheng_Chatstate == '成功'and wubatongcheng_poststate==0:
wubatongcheng_successCount += 1
delivery_info = {
"UUID": uuid,
"公司": company,
"城市": city,
"岗位": job,
"薪资": salary_desc,
"福利": attraction_str,
# "投递来自": "在线简历" if usegroup == group_list[0] else "本地简历"
}
successful_deliveries.append(delivery_info)
elif wubatongcheng_poststate==0:
wubatongcheng_errorCount += 1
if (wubatongcheng_poststate==1):
wubatongcheng_Postpayload = {
"infoId="+uuid+"&os=android&pt=0&ceping=0&format=json&wechat=0&aiScene=4&ct=4&resumeId=&completeResume=0&deliverySource=8&v=1&curVer=13.10.2&downloadApp=0&appId=1&tjfrom=&synYingcai=0&sidDict="
}
wubatongcheng_PostResponse = requests.post(wubatongcheng_PostUrl, data=wubatongcheng_Postpayload, headers=wubatongcheng_headers)
try:
data = wubatongcheng_PostResponse.json()
wubatongcheng_wubatongcheng_poststate = data['result']
if wubatongcheng_wubatongcheng_poststate == 'ok':
wubatongcheng_successCount += 1
delivery_info = {
"UUID": uuid,
"公司": company,
"城市": city,
"岗位": job,
"薪资": salary_desc,
"福利": attraction_str,
# "投递来自": "在线简历" if usegroup == group_list[0] else "本地简历"
}
successful_deliveries.append(delivery_info)
except Exception as e:
print("58同城中没有相关工作请尝试放宽筛选")
print(f"错误信息: {e}")
wubatongcheng_errorCount += 1
# print(wubatongcheng_wubatongcheng_poststate)
else:
if wubatongcheng_poststate == 0:
print("您未开启58同城投递本次投递跳过")
# elif wubatongcheng_poststate in [1, 2]:
# print("您已投递过该公司,本次投递跳过")
# wubatongcheng_Groupid = {'inuuid': uuid}
# wubatongcheng_GroupResponse = requests.get(wubatongcheng_GroupUrl, params=wubatongcheng_Groupid, headers=wubatongcheng_headers)
# if wubatongcheng_GroupResponse.status_code == 200:
# group_data = wubatongcheng_GroupResponse.json()
# except KeyError as e:
# print(f"获取投递状态数据失败: {e}")
# else:
# print(f"投递状态请求失败HTTP状态码: {wubatongcheng_GroupResponse.status_code}")
except Exception as e:
print("58同城中没有相关工作请尝试放宽筛选")
print(f"错误信息: {e}")
else:
print(f"请求失败HTTP状态码: {wubatongcheng_SearchResponse.status_code}")
page += 1
return wubatongcheng_findCount, wubatongcheng_successCount, wubatongcheng_errorCount