爬取腾讯招聘信息

网站地址:搜索 | 腾讯招聘 (tencent.com)https://careers.tencent.com/search.html

一,分析网站

        我们在爬取网站时,先通过查看网页的源代码来确定是否是静态网页还是动态网页

cc497277fdf54c3c89297364ba7367c2.png

网页html源代码

        如图可以看出,这个网站是动态的,它并没有完整的html信息,所以我们并不能实现想要的信息爬取,怎么办呢?我们可以找到网页的API接口就可以获取数据。

c9fb45b0087e4907bbaac475b66305f8.png740a4ab59826452ab18ee987abf1d9f2.png

二,获取url

         因为我们爬取285页的数据,所以我们要找到这285页的url,是不是很麻烦,所以我们来看看他们url有什么特点!!

abc727c89e934872b95c950c9a1c8c8c.png

我们从图中可以看出他们的pagelndex不同,第一页为1,第二页为2,以此类推。

三,拼接url

我们可以利用循环来解决,代码如下:可以看到这样我们就有了所有的url

7969b17b7cb842519fcc1fae2b3d26c6.png

四,获取目标信息

1.分析html网页

34d0a02bf00a4427898f08cfcc13119d.png

       (1) 我们发现这并不是所谓的html的结构,是一种json格式,在Python中,可以通过一些方法将字符串转换为字典。常见的方法包括使用json.loads()方法将符合JSON格式的字符串转换为字典,那我们就直接利用键值对的形式就可以提取想要的信息,后就非常简单了。

1a4647f2e589498a9ee315280718fb24.png

        (2)看到我们要的数据都在Posts底下,我们可以利用字典键值对进行提取,转换为我们要的格式,在进行储存。

2,代码实现

(1)循环获得所用的url

for i in range(1,286):
    url='https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1703858262272&country' \
        'Id=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex={}' \
        '&pageSize=10&language=zh-cn&area=cn'.format(i)

ab9c291a974742ad8c1b6398ac8f8cb4.png

(2)分解,利用列表+字典储存

posts=text_dict['Data']['Posts']
for data in posts:
    add={}
    add["职位名称"]= data["RecruitPostName"]  #职位名称
    add["职位要求"] = data["BGName"]  #职位要求
    add["职位国家"] = data["CountryName"]  # 职位国家
    add["职位所在地"] = data["LocationName"] #职位所在地
    add["职位类别"] = data["CategoryName"]  #职位类别
    add['工作经验要求'] = data["RequireWorkYearsName"]  # 工作经验
    add["岗位职责"] = data["Responsibility"] #岗位职责
    all_list.append(add)

5de592bdaec34361a45cf4272ccafbc8.png          

五,数据处理

        我们发现我们的提取的岗位职责中,我们有很多的换行符和空格的字符,我们可以用正则表达式处理一下。

add["岗位职责"] = re.sub(r'[\s\n/]','',data["Responsibility"]) #岗位职责

六,数据储存

#数据储存
titleslist =list(all_list[0].keys())
workbook = xlwt.Workbook(encoding='utf-8')
sheet = workbook.add_sheet('腾讯招聘信息')
for i in range(len(titleslist)):
    sheet.write(0,i,titleslist[i])
for row in range(1,len(all_list)+1,1):
    for low,key in zip(range(len(titleslist)),titleslist):
        sheet.write(row,low,all_list[row-1][key])
#目录填自己的
workbook.save(r'C:\Users\NONGFU SPRING\Desktop\数据采集结课作业\腾讯招聘信息.xlsx')

七,结果

851f68263abb46f5b2ea550152ac16cb.png

               自此所用的工作已完成

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao木 屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值