网页分析
技术类板块下招聘信息共有300多页,每页10条信息,主要获取的信息是工作名称、地点、内容等。
找到真实请求地址
以技术类板块为例,其地址如下:
https://careers.tencent.com/search.html?pcid=40001
如果直接去请求这个地址,会发现并没有我们想要的职位信息等内容,因此需要通过抓包找到真实的请求地址,通过对XHR进行筛选,很容易就找到了真实的请求地址。
真实请求地址:https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1609576386939&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=40001&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn
通过对比分析,发现这一长串网址中只有两个参数是变动的,一个是时间戳timestamp,一个是请求页数pageIndex,因此我们只需要把这两个参数传入网址中,即可实现自动翻页。
TIME_STAMP = int(round(time.time() * 1000))
PAGE_INDEX = 100
for index in range(1, PAGE_INDEX):
url = f'https://careers.tencent.com/tencentcareer/api/post/Query?timestamp={TIME_STAMP}&countryId' \
f'=&cityId=&bgIds=&productId=&categoryId=40001001,40001002,40001003,40001004,40001005,' \
f'40001006&parentCategoryId=&attrId=&keyword=&pageIndex={index}&pageSize=10&language=zh-cn' \
f'&area=cn '
URL_QUEUE.put(url)
为了实现多线程,将每页URL生成后放入到队列中。
内容获取
这里我们主要获取的信息是工作名称、地点、内容,请求返回的数据通过json加载成dict数据类型后,就很容易获取到想要的信息了。
res = requests.get(self.url_queue.get()).content
text = json.loads(res)
for info in text['Data'