工作前的闲聊

又到了家里催找工作的时候

我的天,就想窝在家多钻研一下程序都不行的

然后,爬爬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&degreefrom=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&degreefrom=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&degreefrom=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获取无忧网的招聘数据相关推荐

  1. 利用python获取微信企业号打卡数据,并生成windows计划任务

    利用python获取微信企业号打卡数据,并生成windows计划任务 安装python 安装第三方库 写主程序 设置Windows计划任务 由于公司的系统用的是Java版本,开通了企业号打卡之后又没有 ...

  2. 【计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩】 https://b23.tv/jRN6MVh

    [计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩] https://b23.tv/jRN6MVh https://b23.tv/jRN6MVh

  3. Python 获取EXSI宿主机上虚拟机数据

    以下从 Vsphere 导出的数据的 Class 是根据此文提供的代码改写,感谢原作者现成儿的代码为我节省了时间 参考地址: Python 获取EXSI宿主机上虚拟机数据 - 一毛丶丶 - 博客园 f ...

  4. python获取某乎热搜数据并保存成Excel

    python获取知乎热搜数据 一.获取目标.准备工作 二.开始编码 三.总结 一.获取目标.准备工作 1.获取目标: 本次获取教程目标:某乎热搜 2.准备工作 环境python3.x requests ...

  5. python获取内网IP和外网IP的方法

    1.获取内网IP 示例代码: import socket# 获取内网IP s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect( ...

  6. python图片分析中央气象台降水量预报_获取中央气象台网的气象数据 全流程技术解析(python 爬虫)...

    一.Python环境搭建 下载安装python 下载安装PyCharm,Community版即可 理论上应该先安装python再安装IDE(PyCharm),必要时按网上要求进行环境变量设置. 二.爬 ...

  7. python获取美团下单买药数据

    近日,素有"救急症于即时,挽垂危于顷刻"美誉的"神药"安宫牛黄丸再次引发热议.有消息称,北京同仁堂下发调价通知,将安宫牛黄丸(3克*丸/盒)的销售价格从780元 ...

  8. Python网络爬虫爬取招聘数据(利用python简单零基础)可做可视化

    爬取Boss直聘相关的招聘数据 一.相关需求分析 1.目的 二.直聘网页结构分析 1.网页相关值的查找 2.网页的下一页规律查找 三.Python相关的第三库介绍 1.Urllib的介绍 (1)url ...

  9. Python获取各大企业招聘需求以及可视化分析展示

    前言 大家早好.午好.晚好吖 ❤ ~欢迎光临本文章 课程亮点 1.爬虫的基本流程 2.可视化分析展示 3.requests模块的使用 4.保存csv 开发环境: python 3.8 运行代码 pyc ...

  10. python --获取内网IP地址

    方法一 import socketdef get_local_ip_address():ip_address = ''try:# 获取本机主机名hostname = socket.gethostnam ...

最新文章

  1. R语言基于随机森林进行特征选择(feature selection)
  2. rxandroid 源码分析
  3. Qt学习(三):事件、定时器、事件过滤器
  4. 万年历单片机c语言,单片机+lcd12864液晶万年历C程序
  5. gbd 分析core文件_Go 性能分析工具 pprof 入门
  6. 【PAT甲级】11077 Kuchiguse (20 分) Java
  7. NativeScript - JS 构建跨平台的原生 APP
  8. pandas to_csv参数详解_【Python基础】Pandas数据可视化原来也这么厉害
  9. java数组、集合和数据结构知识*
  10. pytorch FC_regression
  11. 《CSDN好师父》给你更好选择:“深圳工资、长沙房价、全球视野”
  12. 【短语学习】True(False) Positives (Negatives) 的含义和翻译
  13. Guava之EventBus使用总结
  14. L9110H电机驱动模块-FPGA
  15. 知识管理在企业竞争发展中的作用
  16. Spring @Value(#{})和@Value(${})
  17. 笔记本触控板无法滑动解决办法
  18. chrome五十大实用插件集合!
  19. cJSON系列(1) - cJSON 入门与应用
  20. Mac下Sunny_Ngrok内网地址映射成外网

热门文章

  1. 苹果怎么分享无线密码_无线路由器密码怎么破解 无线路由器密码破解方法【介绍】...
  2. Linux之LAMP架构
  3. D2 Map CFG 2005/12/22
  4. ClickHouse第四讲-表引擎
  5. 静态HTML网页设计作品我的家乡网站设计——我的家乡-绿城之都-南宁(9页) HTML+CSS+JavaScript 大学生简单个人静态HTML网页设计作品
  6. 流水线、超流水线、超标量(superscalar)技术对比
  7. 数据库索引高频面试题梳理
  8. ROS教程之使用UVC摄像头
  9. 微博这样的软件怎么测试,新浪微博都盘上了,这个测试玩嗨了!
  10. 【笔记】结巴分词绘制词云图