def Refreshed(second): ''' 18版合同“刷新职位” :return: ''' login('00852','20181205') position_url = 'https://easy.lagou.com/parentPosition/multiChannel/myOnlinePositions.json' position_header = get_code_token('https://easy.lagou.com/position/multiChannel/myOnlinePositions.htm') s = form_post(url=position_url,headers=position_header,data={'pageNo':1},remark='获取职位id') positionId=s['content']['data']['parentPositionVOs'][0]['positions'][0]['positionId'] print(positionId) refresh_url = "https://easy.lagou.com/position/refreshPosition.json" refresh_header = get_code_token("https://easy.lagou.com/position/my_online_positions.htm?pageNo=1") refresh_data = {'positionId': positionId} print (refresh_header) jsonobject = form_post(url=refresh_url,headers=refresh_header,data=refresh_data,remark='刷新职位') a=jsonobject.get("state") print(a) if a=="406": assert True==True else: time.sleep(second) jsonobject = form_post(url=refresh_url,headers=refresh_header,data=refresh_data,remark='刷新职位') assert_equal("操作成功","操作成功","首次刷新成功","首次刷新失败") # Refreshed(10)
def goods(): login('00853', '05180001') url = 'https://jf.lagou.com/integral/mall/my/goods.json' return get_requests(url, remark='我兑换的商品') # goods()
def ScheduleList(userid): ''' 查询未来28天排期 :param userid: :return: ''' login('00852', '20181205') position_url = 'https://easy.lagou.com/parentPosition/multiChannel/myOnlinePositions.json' position_header = get_code_token( 'https://easy.lagou.com/position/multiChannel/myOnlinePositions.htm') s = form_post(url=position_url, headers=position_header, data={'pageNo': 1}, remark='获取职位id') positionId = s['content']['data']['parentPositionVOs'][1]['positions'][0][ 'positionId'] print(positionId) header = get_app_header(userid) url = "https://gate.lagou.com/v1/zhaopin/topCard/" + str( positionId) + "/scheduleList" object = get_requests(url=url, headers=header, remark="查询未来28天排期") message = object['message'] assert_equal("操作成功", message, "查询未来28天排期接口正确", "查询未来28天排期接口错误") # MySchedule(100014641) # SendBusiness(100014641) # ScheduleList(100014641)
def akeyRefresh(second): login("00852", "20181205") position_url = 'https://easy.lagou.com/parentPosition/multiChannel/myOnlinePositions.json' position_header = get_code_token( 'https://easy.lagou.com/position/multiChannel/myOnlinePositions.htm') s = form_post(url=position_url, headers=position_header, data={'pageNo': 1}, remark='获取职位id') positionId = s['content']['data']['parentPositionVOs'][1]['positions'][0][ 'positionId'] print(positionId) refresh_url = "https://easy.lagou.com/parentPosition/multiChannel/statistics.json" refresh_header = get_code_token( "https://easy.lagou.com/position/my_online_positions.htm?pageNo=1") refresh_data = {'needCandidateNum': 'true', 'parentIds': positionId} print(refresh_header) jsonobject = form_post(url=refresh_url, headers=refresh_header, data=refresh_data, remark='一键刷新职位') a = jsonobject.get("message") print(a) if a == "操作成功": assert_equal("操作成功", a, "一键刷新成功", "一键刷新失败") else: time.sleep(second) jsonobject = form_post(url=refresh_url, headers=refresh_header, data=refresh_data, remark='刷新职位') assert_equal("操作成功", a, "一键刷新成功", "一键刷新失败")
def detail(gooids): login('0086', '18810432995') url = 'https://jf.lagou.com/integral/mall/goods/detail.json' data = {'goodsId': gooids} return get_requests(url=url, remark='商品详情', data=data) # detail()
def post_position(phone, addressId): ''' 批量发布职位 :param sum: 发布职位个数 :return: 发布职位的请求 ''' login('00853', phone) count = 0 posit_list = [('开发|测试|运维类', '后端开发', 'Java', '高级Java'), ('开发|测试|运维类', '移动前端开发', 'IOS', '高级IOS'), ('开发|测试|运维类', '移动前端开发', 'Android', '高级Android')] # for i in range(3): posit = random.randint(0, 2) try: refer_createPosition_url = "https://easy.lagou.com/position/multiChannel/createPosition.htm" Position_header = get_code_token(refer_createPosition_url) createPosition_url = "https://easy.lagou.com/parentPosition/multiChannel/create.json" createPosition_data = { **{ 'isSchoolJob': '1', 'channelTypes': 'LAGOU', 'department': '用户价值部', 'jobNature': '全职', 'salaryMin': '10', 'salaryMax': '12', 'education': '本科', 'workAddressId': addressId, 'positionBrightPoint': '20薪', 'workYear': '应届毕业生', 'channels': '108', 'recommend': True, 'extraInfor': '[{"labels":[{"id":"1","name":"电商"}]}]', 'positionDesc': '<p>脑洞大,创意达,能吃苦。脑洞大,创意达,能吃苦。脑洞大,创意达,能吃苦。脑洞大</p>', 'labels': '[{"id":"1","name":"电商"}]', 'parentExtraInfo': '{}', "useEnergyCard": False }, "firstType": posit_list[posit][0], "positionType": posit_list[posit][1], "positionThirdType": posit_list[posit][2], "positionName": "校招需求" + posit_list[posit][3] } except: pass remark = "批量发布职位成功" r = form_post(url=createPosition_url, data=createPosition_data, headers=Position_header, remark=remark) try: if r['state'] == 1: count += 1 except: pass return {'count': count}
def address_id(code): '''code: 市的code, 获取市的区域的code, 返回lbsList''' login('00852', 20181205) url = 'https://easy.lagou.com/lbs/getChildLbsInfoByCode.json?code={}'.format( code) header = get_code_token( url='https://easy.lagou.com/position/multiChannel/createPosition.htm') remark = '获取地址id' content = get_requests(url=url, headers=header, remark=remark) return content['content']['data']['lbsList']
def PositionId(): ''' 获取职位id :param userid: :return: ''' login('00852', '20181205') res = get_strict_pages_orderResumes() positionId = res['content']['result'][0]['id'] return positionId
def create_company_picture(company_info): '''创建公司图集''' for da in company_info: login('00853', da['phone']) r = saveCompanyProfile(da['companyId']) if r['state'] == 1: da['pic'] = 1 print(str(da['companyId']) + '公司图片添加成功') else: continue return company_info
def get(self): parser = reqparse.RequestParser() parser.add_argument('countryCode', type=str, help="请输入正确地区编号", required=True) parser.add_argument('phone', type=str, help="请输入正确手机号", required=True) args = parser.parse_args() login(args['countryCode'], args['phone']) cuserId, resumeId = get_userId_resumeId() company_id, compant_mds_Id, buserId = get_compangy() return {'state': 1, 'content': {'cuserId': cuserId, 'resumeId': resumeId, 'company_id': company_id, 'compant_mds_Id': compant_mds_Id, 'buserId': buserId}}
def post_position_city(sum, addressId): ''' 批量发布职位 :param sum: 发布职位个数 :return: 发布职位的请求 ''' reslist = [] login('00852', 20181205) for i in range(sum): position_info = postype[random.randint(0, 8)] firstType = position_info['firstType'] positionType = position_info['positionType'] positionThirdType = position_info['positionThirdType'] positionName = position_info['positionName'] refer_createPosition_url = "https://easy.lagou.com/position/multiChannel/createPosition.htm" Position_header = get_code_token(refer_createPosition_url) createPosition_url = "https://easy.lagou.com/parentPosition/multiChannel/create.json" createPosition_data = { **{ 'isSchoolJob': '1', 'channelTypes': 'LAGOU', 'department': '111', 'jobNature': '全职', 'salaryMin': '11', 'salaryMax': '12', 'education': '不限', 'workAddressId': addressId, 'positionBrightPoint': '11111', 'workYear': '应届毕业生', 'channels': '108', 'recommend': True, 'extraInfor': '[{"labels":[{"id":"1","name":"电商"}]}]', 'positionDesc': '<p>111111111111111111111111111111111111111111111</p>', 'labels': '[{"id":"1","name":"电商"}]', 'parentExtraInfo': '{}', "useEnergyCard": False }, "firstType": firstType, "positionType": positionType, "positionThirdType": positionThirdType, "positionName": positionName + str(random.randint(10, 110)) } remark = "批量发布职位" + str(sum) + "个成功" r = form_post(url=createPosition_url, data=createPosition_data, headers=Position_header, remark=remark) reslist.append(r) return reslist
def checkOrderResumes(userid): ''' 生成或获取简历公开查看链接(Alanzhang) :return: ''' login('00852', '20181205') wait(2000) id = get_requests("https://easy.lagou.com/can/new/list.json", headers=None, remark="获得简历id") orderid = id['content']['rows'][0]['id'] print(orderid) header = get_app_header(userid) url = "https://gate.lagou.com/v1/zhaopin/orderResumes/" + orderid + "/public/url?generatesANew=false" jsonobject = get_requests(url=url, headers=header, remark="生成或获取简历公开查看链接") meassage = jsonobject['message'] assert_equal("操作成功", meassage, "生成或获取简历公开查看链接", "生成公开链接错误")
def OperateSchedule(userid): ''' 置顶卡操作下线或取消预订 :return: ''' login('00852', '20181205') header = get_code_token('https://easy.lagou.com/userGoodsRecord/toCard/index.htm') sechedule_url = "https://easy.lagou.com/topCard/my-schedule.json?positionId=&city=&location=&status=&pageNo=1&pageSize=10" object = get_requests(url=sechedule_url, remark="获取置顶卡排序id", headers=header) id = object['content']['data']['scheduleList'][0]['id'] print(id) header = get_app_header(userid) url = "https://gate.lagou.com/v1/zhaopin/topCard/" + str(id) + "/operateSchedule?operate=offline" src = put_requests(url=url, remark="置顶卡操作下线或取消预订", headers=header) print(src) message = src['message'] assert_equal("操作成功", message, "置顶卡操作下线或取消预订正确", "置顶卡操作下线或取消预订接口报错")
def creatCompany_process(phone, countryCode, companyShortName, companyFullName, userName, resumeReceiveEmail, userPosition, industryField, financeStage): r1, r2, r3, r4 = None, None, None, None r1 = login(countryCode, phone) if r1['state'] == 1: r2 = saveHR(companyFullName, userName, resumeReceiveEmail, userPosition) r3 = saveCompany(companyShortName, industryField, financeStage) upload_p = upload_permit() if upload_p['state'] == 1: r4 = submit_new() return r1, r2, r3, r4
def get_resumeId(x): header_url = 'https://passport.lagou.com/grantServiceTicket/grant.html' url = 'https://www.lagou.com/mycenter/resume/getAllResumes.json' get_header(header_url) t = get_requests(url) js = t.content jsdic = json.loads(js) a = jsdic['content'][0] b = jsdic['content'][1] if a['type'] == x: return a['id'] elif b['type'] == x: return b['id'] ''' login('00853', '12140007') # positionId = 5375250 positionId = 5375318 0:附件简历,1:在线简历 resumeId = get_resumeId(0) url = 'https://passport.lagou.com/grantServiceTicket/grant.html' get_header(url) sendResume_html = 'https://www.lagou.com/jobs/' + str(positionId) + '.html' sendResume_url = 'https://www.lagou.com/mycenterDelay/deliverResumeBeforce.json' sendResume_header = get_code_token(sendResume_html) sendResume_data = {'positionId': positionId, 'type': 1, 'resumeId': resumeId, 'force': 'true'} r = form_post(url=sendResume_url, headers=sendResume_header, data=sendResume_data, remark='发简历')
def create_resume(phone, countryCode, userIdentity, kwargs={}): if isinstance(kwargs, dict): name = kwargs.get('name', fake.name()) birthday = kwargs.get('birthday', '1995.10') liveCity = kwargs.get('liveCity', '北京') joinWorkTime = kwargs.get('joinWorkTime', '2018.07') education = kwargs.get('education', '本科') startDate = kwargs.get('startDate', '2009.09') endDate = kwargs.get('endDate', '2013.07') city = kwargs.get('city', '北京') positionType = kwargs.get('positionType', '全职') positionName = kwargs.get('positionName', '机器学习') positionNameType1 = kwargs.get('positionNameType1', '开发|测试|运维类') positionNameType2 = kwargs.get('positionNameType2', '人工智能') salarys = kwargs.get('salarys', '10k-20k') isUnifiedEntrance = kwargs.get('isUnifiedEntrance', 1) r1 = login(countryCode, phone) basicMain_html = 'https://www.lagou.com/resume/perfectresume.html?showQRCode=true' remark = '创建简历的初始页面' get_requests(url=basicMain_html, remark=remark) head_url = 'https://www.lagou.com/resume/saveHeadPic.json?headPicPath={}'.format( '/common/image/pc/default_boy_headpic2.png') remark = "上传头像" get_requests(url=head_url, remark=remark) if userIdentity == 2: # 基本信息 basicMain_url = 'https://www.lagou.com/resume/basicMain.json' basicMain_header = get_code_token(basicMain_html) basicMain_data = { 'name': name, 'birthday': birthday, 'sex': '男', 'email': '{}@testlagou.com'.format(phone), 'userIdentity': userIdentity, 'liveCity': liveCity, 'joinWorkTime': joinWorkTime } remark = "添加基本信息" r2 = form_post(url=basicMain_url, headers=basicMain_header, data=basicMain_data, remark=remark) # 工作经历 workExperience_url = 'https://www.lagou.com/workExperience/save.json' workExperience_header = get_code_token(basicMain_html) workExperience_data = { "positionType": "机器学习", "positionType1": "开发|测试|运维类", "positionType2": "人工智能", "skillLabels": "机器学习", "department": "大数据智能中心", "companyIndustry": "电商", "companyName": "拉勾网", "positionName": "机器学习", "startDate": "2012.07", "requestSource": 1, "endDate": "2019.03", "workContent": "<p>哒哒哒哒哒哒多多多多多多多</p>", "isItVisible": 1 } remark = "添加工作经历" r3 = form_post(url=workExperience_url, headers=workExperience_header, data=workExperience_data, remark=remark) else: # 基本信息 basicMain_url = 'https://www.lagou.com/resume/basicMain.json' basicMain_header = get_code_token(basicMain_html) basicMain_data = { 'name': name, 'birthday': birthday, 'sex': '男', 'email': '{}@testlagou.com'.format(phone), 'userIdentity': userIdentity, 'liveCity': liveCity } remark = "添加基本信息" r2 = form_post(url=basicMain_url, headers=basicMain_header, data=basicMain_data, remark=remark) # 教育经历 edu_header = get_code_token(basicMain_html) edu_url = 'https://www.lagou.com/educationExperience/save.json' edu_data = { 'schoolName': '清华大学', 'education': education, 'professional': '计算机科学与技术', 'startDate': startDate, 'endDate': endDate, 'isUnifiedEntrance': isUnifiedEntrance } remark = "添加教育经历" r4 = form_post(url=edu_url, headers=edu_header, data=edu_data, remark=remark) # 个人名片 personal_url = 'https://www.lagou.com/resume/personalCard.json' personal_header = get_code_token(basicMain_html) personal_data = { 'myRemark': '<p>哈哈哈哈</p>', 'socialAccountJson': '[]', 'abilityLabels': '执行力' } remark = "添加个人名片" r5 = form_post(url=personal_url, headers=personal_header, data=personal_data, remark=remark) # 求职意向 expextJobs_url = 'https://www.lagou.com/expectJobs/expectJobs.json' expectJobs_header = get_code_token(basicMain_html) expectJobs_data = { 'city': city, 'positionName': positionName, 'positionNameType1': positionNameType1, 'positionNameType2': positionNameType2, 'salarys': salarys, 'status': '积极找工作', 'arrivalTime': '随时' } remark = "添加求职意向" r6 = form_post(url=expextJobs_url, headers=expectJobs_header, data=expectJobs_data, remark=remark) # 改善简历的头像和基本名片 r7 = {'success': True} # 完善个人信息 r8 = {'success': True} if userIdentity == 2: return [r1, r2, r3, r4, r5, r6, r7, r8] else: return [r1, r2, r4, r5, r6, r7, r8]
# coding:utf-8 # @Author: Xiawang from utils.util import get_code_token, get_header, form_post, login login('00853', '05180001') rf_url = 'https://passport.lagou.com/grantServiceTicket/grant.html' get_header(rf_url) positionId = str(5375250) location = 'first_level' date = '2018-12-28' topCardNum = str(1) def add_topCard(): topCard_html = 'https://easy.lagou.com/position/multiChannel/myOnlinePositions.htm?pageNo=1' topCard_url = 'https://easy.lagou.com/topCard/add-schedule.json' header = get_code_token(topCard_html) data = { 'scheduleAddList': '[{"positionId":' + positionId + ',' + '"location"' + ':' + location + ',' + '"date"' + ':' + date + ',' + '"topCardNum"' + ':' + topCardNum + '}]' } return form_post(url=topCard_url, headers=header, data=data)
# -*- coding: utf8 -*- __author__ = 'yqzhang' from utils.util import get_requests, form_post,login,get_code_token login('0086','18810432995') # login('00852','20181205') def flow(): url='https://jf.lagou.com/integral/mall/gouyin/flow.json' # header=get_code_token('') data={'queryFlowType':0,'pageNo':1,'pageSize':10} return get_requests(url=url,data=data,remark='勾印流水') # flow()
def post(self): """ @@@ ### Auther = Xiawang ### web端简历处理接口,resumeId,positionId非必填,默认该账号第一条数据 ### Request Header | 字段 | 值 | | ---- | ---- | | method | POST | | content-type | application/json | ### 参数 | 字段 | 必填 | 类型 | 描述| | ---- | ---- | ---- | ---- | | countryCode | True | string | B端注册用户手机号的地区编号 | | phone | True | string | B端注册用户的手机号 | | type | True | int | 处理类型 | | resumeid | false| int | 简历id | | positionid | false | int | 职位id | type:1 待沟通 type:2 面试 type:3 淘汰 type:4 录用 type:5 入职 ### 请求示例 ```json { "countrycode": "00852", "username": "******", "type": 3, "resumeId": 1081023879159488512, "positionId": 13844989 } ``` ### 返回 | 字段 | 类型 | 描述| | ---- | ---- | ---- | ---- | | state | int | 1表示成功 | | message | string | 构造数据的结果 | ### 响应示例 ```json { "state": 1, "message": "入职成功" } ``` @@@ """ parser = reqparse.RequestParser() parser.add_argument('countrycode', type=str, help="请输入用户手机号的归属区号", required=True) parser.add_argument('username', type=str, help="请输入用户的手机号", required=True) args1 = parser.parse_args() login(args1['countrycode'],args1['username']) try: pos,res=getIds() except Exception as IndexError: return {'state':1002,'message':'获取职位和简历id失败,该账号简历列表可能为空'} parser.add_argument('type', type=int, choices=(1, 2, 3,4,5), help="请选择简历处理方式", required=True) parser.add_argument('resumeId', type=int, help="请输入简历id", required=False, default=res) parser.add_argument('positionId', type=int, help="请输入应聘职位id", required=False, default=pos) args = parser.parse_args() if int(args['type']) == 1: r = move_to_communicated(args['positionId'], args['resumeId']) if r['state'] == 1: return {'state': 1, 'message': '移动到待沟通成功'} else: return {'state': r['state'], 'message': r['message']} if int(args['type']) == 2: # move_to_communicated(args['positionId'],args['resumeId']) r = move_to_interview(args['positionId'], args['resumeId']) if r['state'] == 1: return {'state': 1, 'message': '移动到面试成功'} else: return {'state': r['state'], 'message': r['message']} if int(args['type']) == 3: r = move_to_eliminate(args['positionId'], args['resumeId']) if r['state'] == 1: return {'state': 1, 'message': '淘汰成功'} else: return {'state': r['state'], 'message': r['message']} if int(args['type']) == 4: r = move_to_stageoffer(args['positionId'], args['resumeId']) if r['state'] == 1: return {'state': 1, 'message': '录用成功'} else: return {'state': r['state'], 'message': r['message']} if int(args['type']) == 5: r = move_to_employ(args['positionId'], args['resumeId']) if r['state'] == 1: return {'state': 1, 'message': '入职成功'} else: return {'state': r['state'], 'message': r['message']}
remark = "验证B端申请认证公司是否成功" return form_post(url=completeInfo_url, data=completeInfo_data, headers=completeInfo_header, remark=remark, rd='王豪') def completeInfo_process(detailAddress=None, provinceId=None, cityId=None, districtId=None, businessArea=None, companyLng=None, companyLat=None): r1 = company_auth() if r1.get('state', 0) == 1: r2 = completeInfo(detailAddress=detailAddress, provinceId=provinceId, cityId=cityId, districtId=districtId, businessArea=businessArea, companyLng=companyLng, companyLat=companyLat) return r1, r2 if __name__ == '__main__': login('00852', '20190819') completeInfo_process()
def post(self): """ @@@ ### Auther = Xiawang ### B端注册-公司成立-招聘者认证提交及审核-公司认证及审核流程 ### Request Header | 字段 | 值 | | ---- | ---- | | method | POST | | content-type | application/json | ### 参数 | 字段 | 必填 | 类型 | 描述| | ---- | ---- | ---- | ---- | | countryCode | True | string | B端注册用户手机号的地区编号 | | phone | True | string | B端注册用户的手机号 | | userName | True | string | B端注册用户的姓名 | | companyShortName | True | string | B端注册公司的简称 | | companyFullName | True | string | B端注册公司的全称 | | updateCompanyShortName | True | string | B端注册公司的别称 | | resumeReceiveEmail | True | string | B端注册用户接收简历的邮箱 | ### 请求示例 ```json { "countryCode": "00852", "phone": "20030902", "userName": "******", "companyShortName": "烽火啊啊啊", "companyFullName": "烽火啊啊啊", "updateCompanyShortName": "烽火啊啊啊", "resumeReceiveEmail": "*****@*****.**" } ``` ### 返回 | 字段 | 类型 | 描述| | ---- | ---- | ---- | ---- | | state | int | 1表示成功, 400表示错误 | | content | string | 构造数据的结果 | | data | dict | 构造成功数据的具体信息 | | HRInfo | dict | 招聘者信息 | | CompanyInfo | dict | 公司信息 | | Application | dict | 招聘者和公司的认证的申请结果 | | ApproveInfo | string | 招聘者和公司的认证的审核结果 | ### 响应示例 ```json { "state": 1, "content": "B端注册-公司成立-招聘者认证提交及审核-公司认证及审核流程通过!", "data": { "HRInfo": { "phone": "20010011", "countryCode": "00852", "userId": 100016375 }, "CompanyInfo": { "companyShortName": "jjjjjj1", "companyFullName": "jjjjjj1", "companyId": 142419 }, "Application": { "person": "招聘者申请认证成功", "company": "公司申请认证成功" }, "ApproveInfo": { "passPersonApprove": "招聘者认证提交及审核通过", "passCompanyApprove": "公司认证提交及审核通过" } } } ``` @@@ """ company_name = fake.company() parser = reqparse.RequestParser() parser.add_argument('countryCode', type=str, help="请输入B端注册用户手机号的归属区号", required=True) parser.add_argument('phone', type=str, help="请输入B端注册用户的手机号", required=True) parser.add_argument('userName', type=str, default=fake.name(), help="请输入B端注册用户的姓名") parser.add_argument('userPosition', type=str, default='ceo', help="请输入B端注册用户的职位") parser.add_argument('resumeReceiveEmail', type=str, default=fake.email(), help="请输入接收简历的邮箱地址") parser.add_argument('companyShortName', type=str, default=company_name, help="请输入注册公司的简称,要唯一") parser.add_argument('companyFullName', type=str, default=company_name, help="请输入注册公司的全称,要唯一") parser.add_argument('checkedindustryField', help="请输入注册公司的行业标签") parser.add_argument('financeStage', help="请输入发展阶段") # 为构造校招职位增加的字段,之后补充至平台上 parser.add_argument('detailAddress', help="请输入详细地址") parser.add_argument('provinceId', type=int, help="请输入省、直辖市id") parser.add_argument('cityId', type=int, help="请输入城市id") parser.add_argument('districtId', type=int, help="请输入区域id") parser.add_argument('businessArea', help="请输入商圈") parser.add_argument('companyLng', help="请输入经度") parser.add_argument('companyLat', help="请输入维度") args = parser.parse_args() HRInfo = {} CompanyInfo = {} ApproveInfo = {} Application = {} info = None if bool(args['checkedindustryField']) == True: industryField = ",".join(json.loads(args['checkedindustryField'])) # industryField = args['checkedindustryField'] else: industryField = '电商' r1, r2, r3, r4 = creatCompany_process( args['phone'], args['countryCode'], args['companyShortName'], args['companyFullName'], args['userName'], args['resumeReceiveEmail'], args['userPosition'], industryField, args['financeStage']) state = 0 try: if r1['state'] != 1: state = 400 info = "该手机号登录失败, 该用户的手机号: " + args['phone'] if r2['state'] != 1: state = 400 info = "上传B端用户信息失败,该用户的手机号: " + args['userName'] if r3['state'] != 1: state = 400 info = "B端成立公司失败,该公司简称:" + args['companyShortName'] if r4['state'] != 1: state = 400 info = "B端提交招聘者审核失败,该公司简称: " + args['companyShortName'] except TypeError: info = info if not (state == 400): if r1['state'] == r2['state'] == r3['state'] == r4['state'] == 1: state = 1 HRInfo['phone'] = args['phone'] HRInfo['countryCode'] = args['countryCode'] CompanyInfo['companyShortName'] = args['companyShortName'] CompanyInfo['companyFullName'] = args['companyFullName'] try: login_home_code('00853', 22222222) r51, r52, r53 = passPersonApprove() if r51['success'] != True: state = 400 info = "home后台-审核中心-个人认证-审核招聘者失败, 该公司的简称: " + args[ 'companyShortName'] except TypeError: state = 400 info = info login_r = login(args['countryCode'], args['phone']) try: if login_r['state'] == 1: # if not args['detailAddress'] is None: # [r6, r7] = completeInfo_process(detailAddress=args['detailAddress'], provinceId=args['provinceId'], # cityId=args['cityId'], districtId=args['districtId'], # businessArea=args['businessArea'], companyLng=args['companyLng'], # # companyLat=args['companyLat']) # else: r6, r7 = completeInfo_process() if r6['state'] != 1: state = 400 info = "上传营业执照失败, 该公司的简称: " + args['companyShortName'] + "," elif r7['state'] != 1: state = 400 info = "简称为 " + args['companyShortName'] + " 申请认证公司失败" except TypeError: state = 400 info = info if not (state == 400): if r4['state'] == r7['state'] == 1: Application['person'] = "招聘者申请认证成功" Application['company'] = "公司申请认证成功" state = 2 login_res = login_home_code('00853', 22222222) if not (login_res['state'] is 1): info = "home后台登录失败,无法继续审核操作" else: r8 = passCompanyApprove() if r8['success'] != True: state = 400 info = "home后台-公司认证-审核公司成功!该公司的简称: " + args[ 'companyShortName'] if r51['success'] == True and r6['state'] == 1 and r8[ 'success'] == True: ApproveInfo['passPersonApprove'] = "招聘者认证提交及审核通过" ApproveInfo['passCompanyApprove'] = "公司认证提交及审核通过" CompanyInfo['companyId'] = r52 HRInfo['userId'] = r53 state = 1 if state == 1: return { "state": 1, "content": "B端注册-公司成立-招聘者认证提交及审核-公司认证及审核流程通过!", "data": { "HRInfo": HRInfo, "CompanyInfo": CompanyInfo, "Application": Application, "ApproveInfo": ApproveInfo } } return {"state": 400, "content": "执行失败", "faiinfo": info}
def remove_member_has_offline_position(): url = 'https://easy.lagou.com/member/removeMember.json?hasRecruitmentService=true&ignoreOfflinePosition=true' header = get_code_token( url='https://easy.lagou.com/settings/channel/my_channels.htm') return get_requests(url=url, headers=header, remark="解除招聘者信息", rd='曾小宁') def close_trial_package(lg_CompanyId): contractNo = get_contract_list(lg_CompanyId) close_result = close_contract(contractNo=contractNo) return close_result if __name__ == '__main__': from faker import Faker # fake = Faker('zh_CN') # phone, countryCode = 20020026, '00852' # companyShortName, companyFullName = '验证是否能移除招聘者认证2', '验证是否能移除招聘者认证2' # userName, resumeReceiveEmail = fake.name(), fake.email() # updateCompanyShortName = '验证是否能移除招聘者认证1' # r = saveHR_process(phone, countryCode, companyShortName, companyFullName, userName, resumeReceiveEmail, # updateCompanyShortName) r = login('00852', '20020026') if not remove_member(100024844): close_trial_package(96109603) login('00852', '20020026') print(remove_member(100024844))
'https://easy.lagou.com/position/multiChannel/createPosition.htm') def address_id(code): '''code: 市的code''' url = 'https://easy.lagou.com/lbs/getChildLbsInfoByCode.json?code={}'.format( code) header = get_code_token( url='https://easy.lagou.com/position/multiChannel/createPosition.htm') remark = '获取地址id' content = get_requests(url=url, headers=header, remark=remark) return content['content']['data']['lbsList'] def add_work_address(): url = "https://easy.lagou.com/workAddress/add.json" data = {'workAddressId': '1758187'} remark = '添加工作地址' return form_post(url=url, headers=header, data=data, remark=remark) def remove_work_address(workAddressId): url = "https://easy.lagou.com/workAddress/remove.json" data = {'workAddressId': workAddressId} remark = '移除工作地址' return form_post(url=url, headers=header, data=data, remark=remark) if __name__ == '__main__': login('00852', 20181205) print(address_id('110100000'))
def post(self): ''' @@@ ### Auther = Xiawang ### C端用户投递给B端公司在线的某职位 ### Request Header | 字段 | 值 | | ---- | ---- | | method | POST | | content-type | application/json | ### 参数 | 字段 | 必填 | 类型 | 描述| | ---- | ---- | ---- | ---- | | c_countrycode | True | string | C端用户手机号的归属区号 | | c_username | True | string | C端用户的手机号 | | outerPositionId | True | string | 职位页面的职位id----页面必填,接口非必填 | ### 请求示例 ```json { "c_countrycode": "00852", "c_username": "******", "outerPositionId": "574444" } ``` ### 返回 | 字段 | 类型 | 描述| | ---- | ---- | ---- | ---- | | state | int | 1表示成功, 400表示错误 | | content | string | 投递简历的结果 | ### 响应示例 ```json { "state": 400, "content": "默认B端用户登录失败,无法继续投递简历流程" } ``` @@@ ''' parser = reqparse.RequestParser() parser.add_argument('c_countrycode', type=str, help="请输入C端用户手机号的归属区号", required=True) parser.add_argument('c_username', type=str, help="请输入C端用户的手机号", required=True) parser.add_argument('outerPositionId', type=int, help="请填写投递的职位id, 在职位页url中去找") args = parser.parse_args() state = 0 info = None if args['outerPositionId']: login_c = login(args['c_countrycode'], args['c_username']) if login_c['state'] == 1: send_r = sendResume(args['outerPositionId']) if '<i>' in send_r['msg']: new_msg = ''.join(re.split('[<i></i> ]', send_r['msg'])) else: new_msg = send_r['msg'] if send_r['success'] == True: state = 1 info = "C端用户 {} {},投递职位id: {}".format( args['c_username'], new_msg, args['outerPositionId']) else: stat = 400 info = "C端用户 {} {},投递职位id: {}".format( args['c_username'], new_msg, args['outerPositionId']) else: stat = 400 info = "C端用户登录失败,无法继续投递简历流程" else: b_login_r = login('00852', '20181205') if b_login_r['state'] == 1: try: positionId, outerPositionId = online_positionId_outerPositionId( ) except KeyError: state = 400 info = "没有获取到职位id,无法投递" c_login_r = login(args['c_countrycode'], args['c_username']) if c_login_r['state'] == 1: sendResume_r = sendResume(outerPositionId) if '<i>' in sendResume_r['msg']: new_msg = ''.join( re.split('[<i></i> ]', sendResume_r['msg'])) else: new_msg = sendResume_r['msg'] if sendResume_r['success'] == True: state = 1 info = "C端用户{} {} 投递职位id: {}".format( args['c_username'], new_msg, positionId) # b_login_r = login('00852', '20181205') # if b_login_r['state'] == 1: # offline_res = offlinePosition(positionId) # if offline_res['state'] == 1: # state = 1 # info = "恭喜C端用户 {} {},投递职位id: {}".format(args['c_username'], new_msg, # positionId) # else: # state = 1 # info = "恭喜C端用户 {} {},投递职位id: {}, 但该职位没下线成功,再次投递此职位会报错哦".format(args['c_username'], # new_msg, # positionId) else: state = 400 info = "C端用户 {} {},投递职位id: {}".format( args['c_username'], new_msg, positionId) else: state = 400 info = "C端用户登录失败,无法继续投递简历流程" else: state = 400 info = '默认B端用户登录失败,无法继续投递简历流程' return {'state': state, 'content': info}
for key in position: # print (key) positioblist.append(key) return(positioblist) def get_resumeId(x): # 0:附件简历,1:在线简历 header_url = 'https://passport.lagou.com/grantServiceTicket/grant.html' url='https://www.lagou.com/mycenter/resume/getAllResumes.json' get_header(header_url) t=get_requests(url) js = t.content jsdic = json.loads(js) a= jsdic['content'][0] b= jsdic['content'][1] if a['type']==x: return a['id'] elif b['type']==x: return b['id'] def batch_sendresume(resumeid,positionlist): # resumeId = get_resumeId(1) for i in positionlist: sendResume_html = 'https://www.lagou.com/jobs/' + str(i) + '.html' sendResume_url = 'https://www.lagou.com/mycenterDelay/deliverResumeBeforce.json' sendResume_header = get_code_token(sendResume_html) sendResume_data = {'positionId': i, 'type': 1, 'resumeId': resumeid, 'force': 'true'} form_post(url=sendResume_url, headers=sendResume_header, data=sendResume_data,remark='发简历') login('0086','18211111111') batch_sendresume(get_resumeId(1),getpositionidfromcompanyid(142128))
def get_userId_resumeId(): url = 'https://www.lagou.com/resume/myresume.html' page = get_requests(url=url, remark="我的简历页面--获取简历id") try: resumeId = re.findall("resumeId: '(.*?)',", page, re.S)[0] except IndexError: resumeId = 0 try: soup = BeautifulSoup(page, "html.parser") userId = soup.find(id="userid")['value'] except IndexError: userId = 0 return userId, resumeId def get_userId(): url = 'https://www.lagou.com/' page = get_requests(url=url, remark="拉勾网页面--获取userId") try: soup = BeautifulSoup(page, "html.parser") userId = soup.find(id="userid")['value'] except IndexError: userId = 0 return userId if __name__ == '__main__': login('00852', "20030100") print(get_userId_resumeId())
# coding:utf-8 # @Author: cloudyyuan from utils.util import login, get_code_token, form_post, get_header, get_requests, assert_equal ''' 人才沟通 ''' login('00852', '20181205') def session_list(): ''' 获取会话列表 :return: ''' header = get_header("https://easy.lagou.com/im/chat/index.htm") # data={"pageNo":1,"pageSize":15,"createBy":0,"unReadOnly":0} url = "https://easy.lagou.com/im/session/list.json?pageNo=1&pageSize=15&createBy=0&unReadOnly=0" object = get_requests(url=url, remark="获取会话列表", headers=header) meassage = object['message'] assert_equal("操作成功", meassage, "获取会话列表成功", "获取会话列表失败", rd='mandy') def allRead(): ''' 全部标记已读 :return: ''' header = get_header("https://easy.lagou.com/im/chat/index.htm") url = "https://easy.lagou.com/im/session/allRead.json?createBy=0&unReadOnly=0" object = get_requests(url=url, remark="全部标记已读", headers=header)
def post(self): """ @@@ ### Auther = Xiawang ### 发布职位 ### Request Header | 字段 | 值 | | ---- | ---- | | method | POST | | content-type | application/json | ### 参数 | 字段 | 必填 | 类型 | 描述| | ---- | ---- | ---- | ---- | | countrycode | True | string | B端用户手机号的归属区号 | | username | True | string | B端用户手机号 | | sum | True | int | 发布职位总数 | ### 请求示例 ```json { "countrycode": "00852", "username": "******", "sum": 1 } ``` ### 返回 | 字段 | 类型 | 描述| | ---- | ---- | ---- | ---- | | state | int | 1表示成功, 400表示错误 | | content | string | 构造数据的结果 | | data | list | 发布成功的职位信息 | | failinfo | list | 发布失败的职位信息 | ### 响应示例 ```json { "state": 1, "message": "发布职位1个, 其中1个成功", "data": [{ "position_name": "金融产品经理", "parentPositionId": 1788012, "positionId": 13846665 }], "failinfo": [ null ] } ``` @@@ """ j = 0 successlist = [] faillist = [None] data = {} parser = reqparse.RequestParser() parser.add_argument('countrycode', type=str, help="请输入用户手机号的归属区号", required=True) parser.add_argument('username', type=str, help="请输入用户的手机号", required=True) parser.add_argument('firstType', type=str, help="请输入职位的一级类别", default="市场|商务类") parser.add_argument('positionType', help="请输入职位的二级类别", default="市场|营销") parser.add_argument('positionThirdType', type=str, help="请输入职位的三级类别", default="市场营销") parser.add_argument('positionName', default="高级市场营销经理", type=str, help="职位名称") parser.add_argument('workAddress', type=str, help="工作地址", required=True) parser.add_argument('sum', type=int, help="请输入发布职位的数量", required=True) args = parser.parse_args() address_id = junge_address(args['workAddress']) if args['workAddress'] == '' or (not bool(address_id)): return {'state': 400, 'message': '输入的工作地址没存在对应id,请重新输入'} login_res = login(args['countrycode'], args['username']) if login_res['state'] != 1: return {"message": login_res['message']} else: userId, companyId = get_user_company_id() flag = update_user_company_id(address_id, userId, companyId) if flag == False: return {'state': 400, 'message': '工作地址修改不成功,请重新输入'} result = post_position(sum=args['sum'], positionName=args['positionName'], firstType=args['firstType'], positionType=args['positionType'], positionThirdType=args['positionThirdType'], workAddressId=address_id) state = 0 for i in result: if i['state'] == 1: j += 1 print(i) data["position_name"] = i['content']['data'][ 'parentPositionInfo']['positionName'] data["parentPositionId"] = i['content']['data'][ 'parentPositionInfo']['parentPositionId'] data["positionId"] = i['content']['data'][ 'parentPositionInfo']['positionChannelInfoList'][0][ 'positionId'] successlist.append(data) data = {} state = 1 else: data['state'] = i['state'] data['message'] = i['message'] faillist.append(data) data = {} state = 400 return { "state": state, "content": "发布职位" + str(args['sum']) + "个, 其中" + str(j) + "个成功", "data": successlist, "errors": faillist }
r = form_post(url=myonlinepostions_url, data=myonlinepostions_data, headers=Position_header, remark=remark, rd='royliu') try: positionId = r['content']['data']['parentPositionVOs'][0]['positions'][0]['positionId'] outerPositionId = r['content']['data']['parentPositionVOs'][0]['positions'][0]['outerPositionId'] except KeyError: positionId = 0 outerPositionId = 0 return positionId, outerPositionId def get_online_positions(): refer_offlinePosition_url = "https://easy.lagou.com/position/multiChannel/myOnlinePositions.htm?pageNo=1" Position_header = get_code_token(refer_offlinePosition_url) myonlinepostions_url = "https://easy.lagou.com/parentPosition/multiChannel/myOnlinePositions.json" myonlinepostions_data = {"pageNo": 1} remark = "获取下线职位的职位id" r = form_post(url=myonlinepostions_url, data=myonlinepostions_data, headers=Position_header, remark=remark, rd='royliu') positionIds = [] if r['content']['data']['pageSize'] >= 10: for position_info in r['content']['data']['parentPositionVOs']: positionId = position_info['positions'][0]['positionId'] positionIds.append(positionId) return positionIds if __name__ == '__main__': login("0086", "19910626899") positionIds = get_online_positions() print(positionIds) # offlinePosition(positionId=positionId)
company_id = re.findall(r'http://c.hr.lagou.com/gongsi/(.+?).html', company_url)[0] except (IndexError, TypeError): company_id = 0 return company_id if __name__ == '__main__': # get_compangy() # print(get_userId_resumeId()) # print(get_www_company_id()) # print(get_userId_resumeId()) new_phone_list = [ 20030252, 20030253, 20030254, 20030255, 20030256, 20030257, 20030258, 20030259, 20030260, 20030261, 20030262, 20030263, 20030264, 20030265, 20030266, 20030267, 20030268, 20030269, 20030270, 20030271, 20030272, 20030273, 20030274, 20030275, 20030276, 20030277, 20030278, 20030279, 20030280, 20030281, 20030282, 20030283, 20030284, 20030285, 20030286, 20030287, 20030288, 20030289, 20030290 ] sss = [] for phone in new_phone_list: aaa = {} login('00853', phone) com_id = get_www_company_id() aaa['phone'] = phone aaa['companyId'] = com_id sss.append(aaa) print(sss)