苏锡常-数据分析岗位需求分析
项目背景
出于个人就业需求,故通过对苏州 无锡 常州[某程无忧]上招聘信息的分析,了解该地区的市场需求,薪资水平,明确求职方向
说明:
考虑到疫情和数据选取时间节点,结论可能具有片面性,仅供参考!
数据爬取日期2022年5月14日
数据清洗和可视化2022年5月15日
爬虫注意事项:
- 数据来源分析
① 确定自己需求是什么?
采集内容是那些,采集网址是什么
② 通过浏览器自带的 开发者工具 进行抓包分析
确定请求网址 请求方式 请求头 - 代码实现步骤过程
① 发送请求,对于刚刚分析得到url地址模拟浏览器发送请求
② 获取数据,获取服务器返回响应数据
③ 解析数据,提取我们想要数据内容
④ 保存数据,保存表格数据
数据爬取
导入相关库
import requests #导入数据请求模块
import re #导入正则模块
import json#导入json模块
import pprint#导入格式化输出模块
import csv #导入csv
import time#导入时间模块
创建文件 确定保存方式 以及编码格式
f = open('苏锡常数分岗位需求.csv',mode = 'a', encoding='utf-8',newline ='')
csv_writer = csv.DictWriter(f,fieldnames = [
'职位名称',
'城市',
'经验学历要求',
'薪资',
'福利待遇',
'公司名字',
'行业属性',
'公司规模',
'公司性质',
'职位详情页',
'公司详情页',
'发布时间',
])
csv_writer.writeheader()#写入表头
① 发送请求,对于刚刚分析得到url地址模拟浏览器发送请求
Ⅰ 确定请求url地址
Ⅱ 请求方式
Ⅲ 如何进行伪装python代码
for page in range(1,7):
print(f'================================正在采集第{page}页内容================================')
time.sleep(3.5)
url = f'https://search.51job.com/list/070300%252c070400%252c070500,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590,2,{page}.html'
headers = {
'Cookie':'_uab_collina=165252788909109577276979; acw_tc=76b20fec16525278867308550e0f644ec8550264e813975d44159d8b99cee3; guid=60c891c18e26c8e602be27be1a4a922e; nsearch=jobarea%3D%26%7C%26ord_field%3D%26%7C%26recentSearch; search=jobarea%7E%60070300%2C070400%2C070500%7C%21ord_field%7E%600%7C%21recentSearch; acw_sc__v2=627f9793fc42aeae56ee8c45b94e6af8f5a5099b; ssxmod_itna=eqIxg7DQDtK7qAKq0dD=wgY4mxUaaKaeeTkttODl=D=xA5D8D6DQeGTTuadoIo17DBKaibWfPx5fFBA4dY3aonxxaoUtEeGLDmKDyYjOR; ssxmod_itna2=eqIxg7DQDtK7qAKq0dD=wgY4mxUaaKaeeTkttD6p4=miD0yiB403kQyoatK0tcDn4h8qDCqj345Wnxj=4hzW9R8K+p7EWvOq8AYFhKdUxFHk8G,
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome',
}
response = requests.get(url = url,headers = headers) #返回response响应对象:<Response [200]>,200是状态码 表示请求成功
#常见错误:requests.exceptions.InvalidHeader: Invalid return character or leading space in header: Cookie
#解决办法:检查直接复制过来的请求头,删除请求头里面的空格
② 获取数据,获取服务器返回响应数据
Ⅰ response.text 获取响应文本数据
print(response.text)