栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

xx招聘信息爬取

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

xx招聘信息爬取

目录

一、需求

二、步骤

        1、需求分析

           ①、URL

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

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

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

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

         2、解析页面

         3、保存数据

                ①保存到excel中

                ②保存到数据库中

 三、源码


一、需求

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

二、步骤

        1、需求分析

           ①、URL
https://careers.tencent.com/home.html

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

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

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

        ⑤、找到真实链接之后,我们就可以模拟浏览器访问网站
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依据法律法规要求,建立并保持与执法机关的互动窗口,严格履行法律赋予的企业义务。nn', '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正确、及时传导政策监管要求,协助拟定解决方案,加强内部产品协同,降低安全运营风险。nn', '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依据法律法规要求,建立并保持与执法机关的互动窗口,严格履行法律赋予的企业义务。nn', '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从而获取到每一个职位的信息

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表中

                ②保存到数据库中

         首先要先在数据库中创建一个表,然后再通过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()

 三、源码
# -*- 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')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号