网站地址:搜索 | 腾讯招聘 (tencent.com)https://careers.tencent.com/search.html
一,分析网站
我们在爬取网站时,先通过查看网页的源代码来确定是否是静态网页还是动态网页
网页html源代码
如图可以看出,这个网站是动态的,它并没有完整的html信息,所以我们并不能实现想要的信息爬取,怎么办呢?我们可以找到网页的API接口就可以获取数据。
二,获取url
因为我们爬取285页的数据,所以我们要找到这285页的url,是不是很麻烦,所以我们来看看他们url有什么特点!!
我们从图中可以看出他们的pagelndex不同,第一页为1,第二页为2,以此类推。
三,拼接url
我们可以利用循环来解决,代码如下:可以看到这样我们就有了所有的url
四,获取目标信息
1.分析html网页
(1) 我们发现这并不是所谓的html的结构,是一种json格式,在Python中,可以通过一些方法将字符串转换为字典。常见的方法包括使用json.loads()
方法将符合JSON格式的字符串转换为字典,那我们就直接利用键值对的形式就可以提取想要的信息,后就非常简单了。
(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)
(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)
五,数据处理
我们发现我们的提取的岗位职责中,我们有很多的换行符和空格的字符,我们可以用正则表达式处理一下。
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')
七,结果
自此所用的工作已完成