首页 > 其他分享 >使用py爬取复产后的鹅厂都在招聘哪些职位

使用py爬取复产后的鹅厂都在招聘哪些职位

时间:2022-12-28 17:33:25浏览次数:37  
标签:timestamp self py 取复 json params print 产后 data

hello呀,各位小伙伴,今天是五月的第二天,不知道大家是在家里wifi,空调,西瓜呢,还是在拥挤的景区看着人山人海!反正小编是穿着大裤衩,坐在马路边的沙滩上, 啜一口摆在身边的饮料,享受极了。

使用py爬取复产后的鹅厂都在招聘哪些职位_Data


天实在太热了,前几天小编还裹着大棉袄,现在就穿上了短袖和大裤衩。燥热的天也给学习增加了一些情绪,让人难免有一丝浮躁,不管怎么样,我始终相信今天是人生中美好的一天。


使用py爬取复产后的鹅厂都在招聘哪些职位_python_02


看着在网上找的python教学视频,虽然两年前的资料还算比较新,但是最让人难受的莫过于技术更新迭代的代码不兼容问题,还有就是当初的爬取目标有所改版,这些问题 瞬间就有了让人想要放弃的心情。但是“千举万变,其道一也”,只要摸清门路,想必也不是什么难事的。


今天给大家分享的是利用python爬取腾讯招聘的代码,两年前的资料使用的是bs4选择器来进行爬取的,但是随着网站的更新改版只能请求接口来获取数据,反而降低了爬取的难度。过程如下:


首先输入:https://careers.tencent.com/,按F12审查元素,在搜索框里输入想要爬取的职位如:python,同时查看网络请求地址的变化。

 

使用py爬取复产后的鹅厂都在招聘哪些职位_python_03

使用py爬取复产后的鹅厂都在招聘哪些职位_python_04


双击该链接,在网址栏提取请求地址到编辑器做相应的数据分析。这里因网址太长不做张贴,仅以图片展示。


使用py爬取复产后的鹅厂都在招聘哪些职位_python_05


在链接中我们可以看到我们只需要对keywords,pageIndex,这两个主要参数进行处理就可以请求到我们想要的数据了,接下来让我们进入到代码编辑环节:

import requests
from bs4 import BeautifulSoup
import json
import time
import math


class Tencent(object):


def __init__(self,keyWords):
self.base_url = "https://careers.tencent.com/tencentcareer/api/post/Query?"
#职位要求的请求地址
self.detail_url = "https://careers.tencent.com/tencentcareer/api/post/ByPostId?"
#设置请求头
self.headers= {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
self.item_list = []
self.kw = keyWords
self.pageSize = 10
self.timestamp = math.ceil(time.time() * 1000)


#发送请求
def send_request(self,url,params={}):
#time.sleep(2)
response = requests.get(url,params=params,headers=self.headers)
return response.content.decode("utf-8")


#分析数据
def analysis_data(self,data):
#转化成py字典
arr = json.loads(data)['Data']['Posts']
#print(arr)
for i in arr:
dict = {}
print(i['PostId'])
dict['job_name'] = i['RecruitPostName']
dict['work_city'] = i['CountryName']+i['LocationName']
dict['Responsibility'] = i['Responsibility']
dict['LastUpdateTime'] = i['LastUpdateTime']
Requirement = self.sec_request(i['PostId'])
dict['Requirement'] = Requirement
self.item_list.append(dict)


#写入数据
def write_file(self, data):
# 将列表转换成 字符串str
data_str = json.dumps(self.item_list)
with open(self.kw+"job.json", "w") as f:
f.write(data_str)


#请求职位的详细要求
def sec_request(self,PostId):
#print(self.detail_url+PostId)
params = {
"timestamp": self.timestamp,
"postId": PostId,
}
job_detail = self.send_request(self.detail_url,params)
#print(json.loads(job_detail)['Data']['Requirement'])
return json.loads(job_detail)['Data']['Requirement']
#soup = BeautifulSoup(job_detail, "lxml")
#data_list = soup.select(".explain-item")
#print(data_list)


#调度方法
def start_work(self):
# timestamp=1588227498120
# &countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=
# &keyword=python&pageIndex=1&pageSize=10&language=zh-cn&area=cn
#print(timestamp)
#第一次请求看看返回多少数据
params = {
"pageSize":self.pageSize,
"keyword": self.kw,
"timestamp":self.timestamp,
"pageIndex":1,
}
arg = self.send_request(self.base_url, params)
# 将 JSON 对象转换为 Python 字典
#print(json.loads(arg)['Data']['Count'])
#print("--"*30)
#print(json.loads(arg)['Data']['Count']/self.pageSize)
TotalPage = math.ceil(json.loads(arg)['Data']['Count']/self.pageSize)
#print("--" * 30)
#print(TotalPage) TotalPage+1
for page in range(1,TotalPage):
params = {
"pageSize": self.pageSize,
"keyword": self.kw,
"timestamp": self.timestamp,
"pageIndex": page,
}
data_tmp = self.send_request(self.base_url, params)
#print(json.loads(data_tmp))
lastData = self.analysis_data(data_tmp)

self.write_file(lastData)








if __name__ == "__main__":
keyWords = input("请输入搜索的职位(如python):")
spider = Tencent(keyWords)
spider.start_work()


右击执行,输入你想要搜索的职位,程序执行成功后当前文件夹下就会生成一个职位对应的json文件,具体操作过程如图:

使用py爬取复产后的鹅厂都在招聘哪些职位_json_06


以上就是爬取招聘数据的代码,里面的代码有推导的过程,可能会显得有些臃肿,但是对于思路提供还是有一个参照的作用吧,觉得注释代码过于冗余的人可以把注释的内容删除就显得精简多了。



标签:timestamp,self,py,取复,json,params,print,产后,data
From: https://blog.51cto.com/u_15924937/5975839

相关文章

  • Python一键查询 ICP 备案详情
    做搜索引擎优化的都时长面临一个问题,就是网站备案到底对seo是否有影响呢,今天将为大家仔细分析网站备案,到底对SEO有没有影响?首先说下网站备案的目的、是为了防止在网上从事......
  • 使用Python的asyncio模块异步下载整站壁纸
    这篇文章主要给大家介绍关于Python中asyncio模块的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学......
  • 使用python爬取B站视频
    B站之所以火,是因为趣味与知识并存。正如一句“你在B站看番,我在B站学习”,B站还是有一些质量比较好的学习视频。当你在B站上看到喜欢的视频想保存下来时,怎么办呢?我相信很多逛B......
  • Python 爬取人人视频
    hello,小伙伴们,又见面了,距离上一次发布文章的时间,也算是久别重逢了。期间也发生了很多的事情,导致博文断更,也是笔者不愿意的,但是确实是比较忙,不再过多赘述,希望大家能够体谅。......
  • Python爬取快手博主所有视频
    随着互联网经济的快速发展和自媒体行业的普及,越来越多的视频创作者加入了短视频平台,不仅快速的推动了短视频平台行业的发展,也给大众带来了更多新鲜有趣的知识和内容。据最新......
  • sublime安装REPL无法执行python3.7版本
    一、下载sublime最新版本地址:SublimeText-TextEditing,DoneRight单击DOWNLOADFORWINDOWS需要等一会儿自己就下载了。  安装就是下一步就可以了。二、安装......
  • python 使用thread多线程执行耗时代码
    python使用thread多线程执行耗时代码1、引入所需要的包importqueueimportthreadingimporttraceback2、定义线程类:classThreadService(threading.Thread):  de......
  • Python对象的比较和拷贝
    Python对象的比较和拷贝本文内容存在主观理解,详细请查阅官网文档比较(==VSis)==操作符是比较对象的值是否相等,而is比较的事对象的身份标识是否相等,即它们是否是同一......
  • tensorflow_probability.python.bijectors的一些使用
      网上见到一个TensorFlow的代码,没见过这个形式的,是概率编程的代码:#coding=utf-8#Copyright2020TheTF-AgentsAuthors.##LicensedundertheApacheLicens......
  • python中global 和 nonlocal 的作用域
    python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量。一globalglobal关键字用来在函数或其他局部作用域中使用全局变量。......