用Python查看一下前程无忧的Python岗,并尝试做一些可视化以直观化。
""" Python爬取前程无忧,获取最新招聘薪资福利 """ import json import pprint import random import requests import re import csv import time # 打开文件 f = open('20211102前程无忧python岗位.csv', mode='a', encoding='utf-8-sig', newline='') # utf-u-sig打开的时候才不会乱码 # 写入器 csvWriter = csv.DictWriter(f, fieldnames=[ '标题', '公司名称', '城市', '薪资', '招聘信息', '公司属性', '公司规模', '企业性质', '招聘发布日期', '公司详情页', '招聘详情页', ]) # 将上面的内容写入到表头 csvWriter.writeheader() # 请求头 headers = { 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36', } # 多页读取 for page in range(1, 11): time.sleep(random.randint(2, 10)) url = f'https://search.51job.com/list/010000%252c020000%252c030200%252c040000%252c090200,000000,0000,00,9,99,python,2,{page}.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=' # 开始请求网页 responses = requests.get(url=url, headers=headers) # print(responses.text) # 解析网页数据 htmlData = re.findall('window.__SEARCH_RESULT__ = (.*?)</script>', responses.text, re.S) #re.S表示忽略空白 # print(htmlData) # print(type(htmlData)) # list # 将上面的htmlData转换成json数据方便读取 json_data = json.loads(htmlData[0]) # 因为是列表,我们取第一项 # print(json_data) # pprint.pprint(json_data) # 格式化输出一下 # 开始逐项读取 for i in json_data['engine_jds']: # pprint.pprint(i) workAreaText = i['workarea_text'] workCity = workAreaText[0:2] # 城市,用来做数据可视化 issueyear = i['issuedate'][0:4] # 年份,用来做数据可视化 issueMonth = i['issuedate'][5:7] # 月份,用来做数据可视化 issueHour = i['issuedate'][11:13] # 小时,用来做数据可视化 dit = { '标题':i['job_name'], '公司名称':i['company_name'], '城市':i['workarea_text'], '薪资':i['providesalary_text'], '招聘信息':'|'.join(i['attribute_text']), '公司属性':i['companytype_text'], '公司规模':i['companysize_text'], '企业性质':i['companytype_text'], '招聘发布日期':i['issuedate'], '公司详情页':i['company_href'], '招聘详情页':i['job_href'], } # 写入到csv文档 csvWriter.writerow(dit) # 数据可视化方向
数据存储完后是以下这样的:
可视化方向:
1,城市统计;
2,薪资定位;
3,公司规模;
4,公司性质;
5,城市分布热力图