0
点赞
收藏
分享

微信扫一扫

xx招聘信息爬取


目录

​​一、需求​​

​​二、步骤​​

​​        1、需求分析​​

​​           ①、URL​​

​​        ②、输入你要查询的职位情况,咱们这里以python岗位为例。​​

​​        ③、如下所示找到网站展示url链接:​​

​​        ④、复制链接打开发现此链接为json格式数据集,所以我们第一步先要获取到这个json格式的数据集,然后循环获取内部的岗位信息​​

​​        ⑤、找到真实链接之后,我们就可以模拟浏览器访问网站​​

​​         2、解析页面​​

​​         3、保存数据​​

​​                ①保存到excel中​​

​​                ②保存到数据库中​​

​​ 三、源码​​

一、需求

爬取xx招聘的岗位信息,要获取的信息有职位名称、国家、城市、职位分类、职位更新时间、职位要求

二、步骤

        1、需求分析

           ①、URL

https://careers.tencent.com/home.html

        ②、输入你要查询的职位情况,咱们这里以python岗位为例。

xx招聘信息爬取_python

        ③、如下所示找到网站展示url链接:

xx招聘信息爬取_微信_02

        ④、复制链接打开发现此链接为json格式数据集,所以我们第一步先要获取到这个json格式的数据集,然后循环获取内部的岗位信息

xx招聘信息爬取_html_03

        ⑤、找到真实链接之后,我们就可以模拟浏览器访问网站

url = f'https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1623410681974&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn'

headers= {
'referer': f'https://careers.tencent.com/search.html?index=1',
'user-agent': str(UserAgent().random)
}
resp = requests.get(url, headers = headers)
print(resp.json())

'''
{'Code': 200, 'Data': {'Count': 10006, 'Posts': [{'Id': 0, 'PostId': '1237621607640338432', 'RecruitPostId': 58544, 'RecruitPostName': '35933-司法协作经理(南京)', 'CountryName': '中国', 'LocationName': '南京', 'BGName': 'S1', 'ProductName': '', 'CategoryName': '法律与公共策略', 'Responsibility': '研究落实国家互联网政策和法律法规相关要求,协调业务做好合规工作;\n深入研究涉及网络犯罪的内在规律和发展趋势,为保护业务健康发展建立畅通外部沟通渠道;\n依据法律法规要求,建立并保持与执法机关的互动窗口,严格履行法律赋予的企业义务。\n\n', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1237621607640338432', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1269571935444934656', 'RecruitPostId': 62560, 'RecruitPostName': 'AQ-内容安全运营经理', 'CountryName': '中国', 'LocationName': '北京', 'BGName': 'S1', 'ProductName': '', 'CategoryName': '法律与公共策略', 'Responsibility': '与相关主管部门、行业组织等建立长期、良好的沟通和合作关系;\n及时了解、研究与公司业务相关的政策监管要求与行业发展趋势等,协助制定应对策略及方案,有效沟通相关情况,保障产品安全运营,推动行业健康发展;\n正确、及时传导政策监管要求,协助拟定解决方案,加强内部产品协同,降低安全运营风险。\n\n', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1269571935444934656', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1303145399837532160', 'RecruitPostId': 65853, 'RecruitPostName': '44327-微信安全运营经理(广州)', 'CountryName': '中国', 'LocationName': '广州', 'BGName': 'S1', 'ProductName': '微信', 'CategoryName': '法律与公共策略', 'Responsibility': '从法律法规及政策要求的角度出发,全流程跟进微信产品功能的开发设计,并根据产品特点与发展情况,动态评估安全风险,提供解决方案,对运营效果负责,保障产品可持续运营;\n协助相关团队应对、处理涉微信平台的安全突发或应急事件,推进完善运营规则及工作机制。', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1303145399837532160', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1303145400231796736', 'RecruitPostId': 65854, 'RecruitPostName': '44327-微信态势分析师(广州)', 'CountryName': '中国', 'LocationName': '广州', 'BGName': 'S1', 'ProductName': '微信', 'CategoryName': '法律与公共策略', 'Responsibility': '促进微信平台正向影响力合作生态,根据产品特征、政策法规要求、行业生态等开展分析,并推动项目策划与执行,持续提升平台正向价值;\n构建态势感知模型及分析方法,为风险治理整体解决方案提供专业参考。', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1303145400231796736', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1303145401032908800', 'RecruitPostId': 65856, 'RecruitPostName': '44327-微信安全风控经理(广州)', 'CountryName': '中国', 'LocationName': '广州', 'BGName': 'S1', 'ProductName': '微信', 'CategoryName': '法律与公共策略', 'Responsibility': '对侵害微信产品业务的违法违规行为开展体系化研究,为技术及运营团队提供综合治理解决方案,保护平台安全;\n对平台存在的各类风险问题进行评估分析,及时发现安全风险并制定、落实相应解决方案。', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1303145401032908800', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1303145401775300608', 'RecruitPostId': 65858, 'RecruitPostName': '44327-微信安全合规经理(广州)', 'CountryName': '中国', 'LocationName': '广州', 'BGName': 'S1', 'ProductName': '微信', 'CategoryName': '法律与公共策略', 'Responsibility': '深入了解和跟进互联网行业监管动态,围绕信息安全、数据安全、个人隐私等领域法律法规、政策标准,分析对微信平台的合规影响,协助制定和完善合规运营方案;\n推动微信业务的合规评估与风险分析,及时发现问题并制定解决方案,做好沟通联动并推进实施;\n建立安全合规机制,跟进合规要求的落实进步,并协调推动优化整改。', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1303145401775300608', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1351485887594110976', 'RecruitPostId': 72034, 'RecruitPostName': '44329-司法协作经理(重庆)', 'CountryName': '中国', 'LocationName': '重庆', 'BGName': 'S1', 'ProductName': '', 'CategoryName': '法律与公共策略', 'Responsibility': '研究落实国家互联网政策和法律法规相关要求,协调业务做好合规工作;\n深入研究涉及网络犯罪的内在规律和发展趋势,为保护业务健康发展建立畅通外部沟通渠道;\n依据法律法规要求,建立并保持与执法机关的互动窗口,严格履行法律赋予的企业义务。\n\n', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1351485887594110976', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1403534865667727360', 'RecruitPostId': 79061, 'RecruitPostName': '28601-微信支付交通行业产品策划经理', 'CountryName': '中国', 'LocationName': '深圳', 'BGName': 'WXG', 'ProductName': '', 'CategoryName': '产品', 'Responsibility': '1、负责微信支付停车场景的产品策划工作,为车主用户带来卓越的停车体验;\n2、能够深刻理解停车行业的运营模式和商业目标;\n3、挖掘商户具体诉求和痛点,通过针对性的行业解决方案,提升商户服务能力; \n4、结合并升级微信产品能力,联合行业商户、生态服务商等相关合作伙伴,结合商户侧的商业目标和运营诉求,不断为行业创造价值;\n5、挖掘腾讯内外各业务及行业资源,不断探索产品化解决方案,并推动跨团队合作,助力行业发展。', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=0', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1372383269839970304', 'RecruitPostId': 74940, 'RecruitPostName': '21085-FPS电竞品牌经理', 'CountryName': '中国', 'LocationName': '深圳', 'BGName': 'IEG', 'ProductName': '腾讯游戏', 'CategoryName': '营销与公关', 'Responsibility': '负责《穿越火线》及《穿越火线:枪战王者》国际/职业/大众赛事体系及品牌搭建;\n负责赛事及赛事品牌策略策划及落地执行,包括但不仅限于赛事核心创意、素材、传播及内容、赛事落地活动把控及执行等工作; \n负责赛事及营销工作中的资源统筹,不断提升产品及赛事的影响力。', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1372383269839970304', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}, {'Id': 0, 'PostId': '1371703908962934784', 'RecruitPostId': 74791, 'RecruitPostName': '21089-英雄联盟手游内容运营', 'CountryName': '中国', 'LocationName': '深圳', 'BGName': 'IEG', 'ProductName': '腾讯游戏', 'CategoryName': '内容', 'Responsibility': '负责制定手游作者引入策略、专项扶持策略,规划头部作者培养方案,进行优质内容引入、管理和分发,搭建健康稳健的手游内容创作生态;\n针对不同的宣发节点需求,制定特色内容运营和发行计划,助力整体产品发行。 同时持续完善和丰富整个内容生态,提升内容影响力;\n负责手游在内部社区以及外部平台的内容合作,搭建优质的PGC和PUGC内容生产机制以及渠道分发能力,打造精品标杆内容和热门专栏,打造爆款内容;\n持续拓展深度合作的手游内容作者以及机构数量,通过设置激励机制、搭建支持体系、制定推广计划、强化平台合作等方式,提升社区及全平台手游活跃作者数,进而提升整体内容质量;', 'LastUpdateTime': '2021年06月12日', 'PostURL': 'http://careers.tencent.com/jobdesc.html?postId=1371703908962934784', 'SourceID': 1, 'IsCollect': False, 'IsValid': True}]}}
'''

         2、解析页面

这些信息都在json数据面的posts下面。所以接下来如何get到posts从而获取到每一个职位的信息

xx招聘信息爬取_微信_04

jobs = date.json()['Data']['Posts']
for job in jobs:
post_name = job['RecruitPostName'] # 职位名称
country_name = job['CountryName'] # 国家
loc_name = job['LocationName'] # 城市
category_name = job['CategoryName'] # 职位分类
last_up_time = job['LastUpdateTime'] # 职位更新时间
responsibility = job['Responsibility'] # 职位要求

         3、保存数据

                ①保存到excel中

 wb = openpyxl.Workbook()#创建工作簿对象
sheet = wb.active#创建工作表对象
sheet.title = '招聘信息'#为表取名字
sheet.append(['职位名称','国家','城市','职位分类','职位更新时间','职位要求'])#写入表头
sheet.append([post_name,country_name,loc_name,category_name,last_up_time,responsibility])#将数据写入到excel表中

xx招聘信息爬取_解决方案_05

                ②保存到数据库中

         首先要先在数据库中创建一个表,然后再通过python与数据库建立连接

db = pymysql.connect(
host='localhost',#数据库ip地址
user='root',#用户名
password='123456',#密码
port=3306,#端口号
db='tencent')#数据库名字
with db.cursor() as cursor:
sql = 'insert into tencent(name,country,city,classification,time,requirement) values(%s,%s,%s,%s,%s,%s)'
affected_rows = cursor.execute(sql, (post_name, country_name, loc_name,category_name,last_up_time,responsibility)) # 字段是个元素
if affected_rows == 1:
print('插入成功')
db.commit()

xx招聘信息爬取_微信_06

 三、源码

# -*- coding: utf-8 -*-
from lxml import etree
import json
import requests
import openpyxl
import pymysql
if __name__ == '__main__':
db = pymysql.connect(
host='localhost',
user='root',
password='123456',
port=3306,
db='tencent')
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = '招聘信息'
sheet.append(['职位名称','国家','城市','职位分类','职位更新时间','职位要求'])
for page in range(1,30):
url = f'https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1654520826989&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=python&pageIndex={page}&pageSize=10&language=zh-cn&area=cn'
headers = {
'User-Agent': 'Mozilla /5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
}
date = requests.get(url=url,headers=headers)
jobs = date.json()['Data']['Posts']
for job in jobs:
post_name = job['RecruitPostName'] # 职位名称
country_name = job['CountryName'] # 国家
loc_name = job['LocationName'] # 城市
category_name = job['CategoryName'] # 职位分类
last_up_time = job['LastUpdateTime'] # 职位更新时间
responsibility = job['Responsibility'] # 职位要求
sheet.append([post_name,country_name,loc_name,category_name,last_up_time,responsibility])#保存到excel中
with db.cursor() as cursor:
sql = 'insert into tencent(name,country,city,classification,time,requirement) values(%s,%s,%s,%s,%s,%s)'
affected_rows = cursor.execute(sql, (post_name, country_name, loc_name,category_name,last_up_time,responsibility)) # 字段是个元素
if affected_rows == 1:
print('插入成功')
db.commit()

# wb.save('腾讯.xlsx')

举报

相关推荐

0 条评论