python获取无忧网的招聘数据
工作前的闲聊
又到了家里催找工作的时候
我的天,就想窝在家多钻研一下程序都不行的
然后,爬爬51job的招聘信息吧,主要是不想自己一页页去翻,怪麻烦的
作为一个恋家的人,而且自己有台车子不开怪可惜的,鉴于广州限行,就暂不考虑,有需要再看看吧
注:以下内容在作者这边的请求头中是有cookie值的,但大家如果需要用的话,就请使用自己的cookie值吧,代码中就不贴上去了
接口分析
搜索关键字:"python"
工作地区: "江门" + "中山" + "珠海" + "佛山"
https://search.51job.com/list/031500%252C030700%252C030500%252C030600,000000,0000,00,9,99,python,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=
网址是这么一串东西,
不难看出:
031500就是江门, 030700就是中山, 030500就是珠海, 030600就是佛山
%252C是他们中间的连接符
然后还有后面的python , 以及.html?前的那个数字是页数
剩下那些参数其实都不太需要,但还是留着吧
页面爬取
接口基本分析完,先把网页文本拔下来看看长啥样
import requestsurl = r"https://search.51job.com/list/031500%252C030700%252C030500%252C030600,000000,0000,00,9,99,python,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare="headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}resp = requests.get(url, headers=headers)with open("51job.html", "w", encoding="utf-8") as f:f.write(resp.content.decode(resp.encoding))
保存到的html文件点开看看,然后发现,很多是乱码,主要还是因为这个response.encoding不太给力,不过没关系,拿到第一手网页代码,可以到head标签中的meta标签中查找charset属性,这里找到是gbk,然后把response.encoding改成"gbk"即可
修改之后再运行一次,走你 !
这就可以了,然后看看拿到的页面有没有我们需要的内容
页面分析
在网页审查元素可以看到我们想要的是id为resultList的div下的类属性为el的div
在我们保存的网页代码中查找关键字,可以看到我们需要的信息是存在的
信息等的都十分齐全
解析与提取页面数据
接下来就是解析,用的是xpath , 初步解析,要求先是取到以下内容
div下的p标签下的span标签下的a标签的href值和文本内容,"职位名称"(a标签里的href链接方便后续爬取职位详情)
div下的class=t2的span标签的文本内容,"所属公司"
div下的class=t3的span标签的文本内容,"上班地点"
div下的class=t4的span标签的文本内容,"工资待遇"
div下的class=t5的span标签的文本内容,"发布时间"
from lxml import etree
content = resp.content.decode("gbk")tree = etree.HTML(content)div_list = tree.xpath('//div[@id="resultList"]/div[@class="el"]')for div in div_list:try:position = div.xpath('./p/span/a/text()')[0].strip()href = div.xpath('./p/span/a/@href')[0].strip()company = div.xpath('./span[@class="t2"]/a/text()')[0].strip()city = div.xpath('./span[@class="t3"]/text()')[0].strip()treatment = div.xpath('./span[@class="t4"]/text()')[0].strip()publish_time = div.xpath('./span[@class="t5"]/text()')[0].strip()except:continue
数据的保存
还有什么格式的文档比类excel文档看起来舒服的呢,所以这里采用numpy模块对数据进行处理并保存到本地
import numpy as np# 这是在for循环之前的
arr = np.array(["职位", "链接", "公司", "城市", "待遇", "发布时间"])# 这是在for循环里取得数据之后的(try结构外)arr_tmp = np.array([position, href, company, city, treatment, publish_time])arr = np.vstack((arr, arr_tmp))# 这是在for循环之后的
np.savetxt("work.csv", arr, fmt="%s", delimiter=",")
这是后就能看到目录下生成了以个csv文件
打开查看,正是我们想要的内容
接下来可以大量地获取了
正式爬取数据
从网页可以直观看到有10页的数据,所以直接用循环取获取即可
整体代码如下
import requests
from lxml import etree
import numpy as nparr = np.array(["职位", "链接", "公司", "城市", "待遇", "发布时间"])url_head = r"https://search.51job.com/list/031500%252C030700%252C030500%252C030600,000000,0000,00,9,99,python,2,"url_tail = r".html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare="headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}
for page in range(10):url = url_head + str(page + 1) + url_tailresp = requests.get(url, headers=headers)content = resp.content.decode("gbk")tree = etree.HTML(content)div_list = tree.xpath('//div[@id="resultList"]/div[@class="el"]')for div in div_list:try:position = div.xpath('./p/span/a/text()')[0].strip()href = div.xpath('./p/span/a/@href')[0].strip()company = div.xpath('./span[@class="t2"]/a/text()')[0].strip()city = div.xpath('./span[@class="t3"]/text()')[0].strip()treatment = div.xpath('./span[@class="t4"]/text()')[0].strip()publish_time = div.xpath('./span[@class="t5"]/text()')[0].strip()except:continuearr_tmp = np.array([position, href, company, city, treatment, publish_time])arr = np.vstack((arr, arr_tmp))np.savetxt("work.csv", arr, fmt="%s", delimiter=",")
爬取完毕之后检查csv文件,正式我们想要的内容并且条数是基本接近的(有小部分取不到属正常情况)
python获取无忧网的招聘数据相关推荐
- 利用python获取微信企业号打卡数据,并生成windows计划任务
利用python获取微信企业号打卡数据,并生成windows计划任务 安装python 安装第三方库 写主程序 设置Windows计划任务 由于公司的系统用的是Java版本,开通了企业号打卡之后又没有 ...
- 【计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩】 https://b23.tv/jRN6MVh
[计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩] https://b23.tv/jRN6MVh https://b23.tv/jRN6MVh
- Python 获取EXSI宿主机上虚拟机数据
以下从 Vsphere 导出的数据的 Class 是根据此文提供的代码改写,感谢原作者现成儿的代码为我节省了时间 参考地址: Python 获取EXSI宿主机上虚拟机数据 - 一毛丶丶 - 博客园 f ...
- python获取某乎热搜数据并保存成Excel
python获取知乎热搜数据 一.获取目标.准备工作 二.开始编码 三.总结 一.获取目标.准备工作 1.获取目标: 本次获取教程目标:某乎热搜 2.准备工作 环境python3.x requests ...
- python获取内网IP和外网IP的方法
1.获取内网IP 示例代码: import socket# 获取内网IP s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect( ...
- python图片分析中央气象台降水量预报_获取中央气象台网的气象数据 全流程技术解析(python 爬虫)...
一.Python环境搭建 下载安装python 下载安装PyCharm,Community版即可 理论上应该先安装python再安装IDE(PyCharm),必要时按网上要求进行环境变量设置. 二.爬 ...
- python获取美团下单买药数据
近日,素有"救急症于即时,挽垂危于顷刻"美誉的"神药"安宫牛黄丸再次引发热议.有消息称,北京同仁堂下发调价通知,将安宫牛黄丸(3克*丸/盒)的销售价格从780元 ...
- Python网络爬虫爬取招聘数据(利用python简单零基础)可做可视化
爬取Boss直聘相关的招聘数据 一.相关需求分析 1.目的 二.直聘网页结构分析 1.网页相关值的查找 2.网页的下一页规律查找 三.Python相关的第三库介绍 1.Urllib的介绍 (1)url ...
- Python获取各大企业招聘需求以及可视化分析展示
前言 大家早好.午好.晚好吖 ❤ ~欢迎光临本文章 课程亮点 1.爬虫的基本流程 2.可视化分析展示 3.requests模块的使用 4.保存csv 开发环境: python 3.8 运行代码 pyc ...
- python --获取内网IP地址
方法一 import socketdef get_local_ip_address():ip_address = ''try:# 获取本机主机名hostname = socket.gethostnam ...
最新文章
- R语言基于随机森林进行特征选择(feature selection)
- rxandroid 源码分析
- Qt学习(三):事件、定时器、事件过滤器
- 万年历单片机c语言,单片机+lcd12864液晶万年历C程序
- gbd 分析core文件_Go 性能分析工具 pprof 入门
- 【PAT甲级】11077 Kuchiguse (20 分) Java
- NativeScript - JS 构建跨平台的原生 APP
- pandas to_csv参数详解_【Python基础】Pandas数据可视化原来也这么厉害
- java数组、集合和数据结构知识*
- pytorch FC_regression
- 《CSDN好师父》给你更好选择:“深圳工资、长沙房价、全球视野”
- 【短语学习】True(False) Positives (Negatives) 的含义和翻译
- Guava之EventBus使用总结
- L9110H电机驱动模块-FPGA
- 知识管理在企业竞争发展中的作用
- Spring @Value(#{})和@Value(${})
- 笔记本触控板无法滑动解决办法
- chrome五十大实用插件集合!
- cJSON系列(1) - cJSON 入门与应用
- Mac下Sunny_Ngrok内网地址映射成外网
热门文章
- 苹果怎么分享无线密码_无线路由器密码怎么破解 无线路由器密码破解方法【介绍】...
- Linux之LAMP架构
- D2 Map CFG 2005/12/22
- ClickHouse第四讲-表引擎
- 静态HTML网页设计作品我的家乡网站设计——我的家乡-绿城之都-南宁(9页) HTML+CSS+JavaScript 大学生简单个人静态HTML网页设计作品
- 流水线、超流水线、超标量(superscalar)技术对比
- 数据库索引高频面试题梳理
- ROS教程之使用UVC摄像头
- 微博这样的软件怎么测试,新浪微博都盘上了,这个测试玩嗨了!
- 【笔记】结巴分词绘制词云图