作者:xiaoyu

微信公众号:Python数据科学

知乎:Python数据分析师

最近总被智联招聘广发骚扰,烦死个人了简直。索性点进去看了看爬虫工程师现在市场需求到底怎么样了?发展前景如何?看完了之后感觉目前还不错,根据北京来看职位需求还是蛮多的,薪资也还行,于是就对智联招聘职位信息的爬取发起了一次小小的挑战,今天给大家分享一个爬取招聘网站的工作信息,效果图如下(部分截图)。

(更多效果图在后面)

功能需求分析

主要功能需求如下:

用户输入工作地点和感兴趣的职位信息;

根据指定输入信息进行多线程的网页爬取;

解析提取结构化的招聘信息;

将数据存入指定的数据库;

这里由于篇幅和时间原因,功能并没有那么复杂,但是博主会在后续加入更加丰富的功能,并与大家分享,包括:

ip池的加入;

爬取和解析效率的优化;

对爬取数据进行数据分析,提供可视化的统计和简单预测;

其它反爬功能;

功能实现分析

明白了要完成的任务,就需要开始分析我们的目标网站了。

1.网页爬取分析

打开智联招聘的搜索界面,输入 “爬虫” 二字为例, 如下:

然后我们通过fiddler抓包工具抓取浏览器操作时的信息如下:

浏览器发出请求的headers头信息,copy到代码headers中。

由于浏览器正常操作下是通过点击“搜索按钮”或者“回车”来进行职位搜索的,而我们并不希望使用浏览器内核webdriver的使用来解决此问题。

因此,思路是:我们需要从发出的GET请求的URL进行分析。

在浏览器中显示的URL是这样子的,有汉字。

“北京” 和 “爬虫” 关键词都以汉字形式显示。感觉这和上面蓝色的链接差不多一样啊!没错,上面的URL是北京和爬虫关键字进行编码之后的样子,而我们向服务器提交的正是上面那个编码之后的URL。

后面 “p=1” 的意思是第一页,“adv=0” 经其它数字测试后没有影响,固不做改变。

好了,捋明白了。我们需要做的其实就是将我们输入的关键词汉字进行编码,然后替换掉上面蓝色URL的lj=“”和kw=“”中的内容,再用这个新的URL发出请求就OK了。

2.网页解析分析

这是浏览器搜索之后得到的结果,从招聘信息中我们希望得到一些有用的信息。博主这里定义了五个字段信息:职位名称、反馈率、公司名称、职位月薪、工作地点。这些信息关系到你如何创建数据库表单,后面会提到。

这里博主决定使用BeautifulSoup方法解决网页的解析,那么先用F12 element看看网页的结构再说。

博主经分析后发现,其它四个信息提取方式都是一样的,但是工作名称的标签结构是有所不同的,为什么呢?

来,先看一条数据的标签,它是这样的:

再看,另一条数据的标签,是这样的:

发现有什么不同了吗?第一个工作名称的标签里有,而第二个标签里什么都没有。

看看上面这两个名称不难发现,导致这个问题的原因其实是关键字的存在(第一个标签中有红色关键字)。

而又想到,我们正常搜索的时候一般不会输入完整的工作名称,比如我只输入 “爬虫” 二字,由于可能存在以上关键字的问题,那么标签的结果就会不同。因此,我们需要在代码解析的时候进行特殊处理,下面进行代码实现分析。

代码实现分析

由于需要将解析后的数据存入数据库,因此需要先在命令窗口创建一个数据库(也可以在Python中完成),这里简单提一下所需的操作。

使用了MySQL数据库进行储存

数据库表单包含了之前提到的五个字段信息

下面是具体代码的实现。

1.URL的重组实现

使用了property修饰器定了函数来接收用户信息

将输入信息用quote进行编码重组,生成爬取所需的目标URL

2.html下载

将重新生成的URL放入函数中进行html的下载。

3.html解析

使用BeautifulSoup和正则表达式从网页解析五个字段信息。

4. 储存解析数据

以上是代码的核心内容,完整源码博主已经上传到Github上了,可供参考,链接https://github.com/xiaoyusmd/...

更多效果图展示

展示效果图均为部分截图,用于示意。

(搜索关键词:广告策划,地理位置:北京)

(搜索关键词:电子工程师,地理位置:上海)

(搜索关键词:会计,地理位置:深圳)

(搜索关键词:客户经理,地理位置:广州)

总结

本篇分享了一个从智联招聘网站爬取工作信息的实战内容,完成了需求的基本功能。

在此实战内容基础上,更多复杂和精彩功能会在后续陆续分享

欢迎关注微信公众号Python数据科学。

python爬虫招聘-Python爬虫实战之(二)| 寻找你的招聘信息相关推荐

  1. appium+python闲鱼采购自动化实战(二)

    appium+python闲鱼采购自动化实战(二) appium+python闲鱼采购自动化实战 appium+python闲鱼采购自动化实战(二) 三.环境搭建 2.android-sdk安装和设置 ...

  2. Python核心场景自动化测试项目实战(二)

    往期关联文章回顾: Pytest+Allure+Jenkins接口自动化项目实战(一) [Python篇]核心场景接口自动化方案(一) 以前我们用python+unittest+HTMLTestRun ...

  3. Python爬虫实战之二 - 基于Scrapy框架抓取Boss直聘的招聘信息

    Python爬虫实战之三 - 基于Scrapy框架抓取Boss直聘的招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于 ...

  4. python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息

    Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...

  5. python爬虫招聘-Python爬虫实战-抓取boss直聘招聘信息

    实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃.为此小编建了个Python全栈免费答疑.裙 : ...

  6. Python爬虫实战之二:requests-爬取亚马逊商品详情页面

    本实战项目是中国大学MOOC国家精品课程<Python网络爬虫与信息提取>(by 嵩天 北京理工大学)学习笔记.代码段均可在ide中运行by now(2021-11-29). 目录 1.爬 ...

  7. python爬虫影评_Python爬虫(二十)_动态爬取影评信息

    本案例介绍从JavaScript中采集加载的数据.更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import requests import re import t ...

  8. python爬虫从入门到实战笔记——第四章Scrapy框架

    推荐阅读: python爬虫从入门到实战笔记--第一章爬虫原理和数据爬取 python爬虫从入门到实战笔记--第二章非结构化数据和结构化数据的提取 python爬虫从入门到实战笔记--第三章动态HTM ...

  9. 2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会

    2019独角兽企业重金招聘Python工程师标准>>> 阿里云大学在线工作坊上线,原理精讲+实操演练,让你真正掌握云计算.大数据技能. 在第一批上线的课程中,有一个Python爬虫的 ...

  10. python爬虫招聘-Python爬虫抓取智联招聘(基础版)

    原标题:Python爬虫抓取智联招聘(基础版) 作者:C与Python实战 「若你有原创文章想与大家分享,欢迎投稿.」 对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪 ...

最新文章

  1. 【虚拟化实战】容灾设计之三Stretched Cluster
  2. 关于CBitmap,LoadBitmap 的使用
  3. Android 10.0系统启动之init进程-[Android取经之路]
  4. java word表格_Java 添加Word表格行或列
  5. smtplib python教程_python使用smtplib模块发送邮件
  6. Python学习笔记:Day 6 配置文件
  7. matlab操作入门实验报告,matlab操作实验报告
  8. java http post 传参数_HttpClient之带参数的post请求
  9. Java Swing专栏订阅须知《必读》
  10. Web前端工作笔记011---ztree的使用方法_大全
  11. Thrift协议的服务模型
  12. tomcat中server.xml文件解析
  13. intellij idea 2017破解
  14. OSChina 周四乱弹 —— 针对热门上姐弟恋的解答
  15. S2ANet(Align Deep Features for Oriented Object Detection)解读
  16. 腾讯QQ 类企业QQ在线代码!
  17. 时区、时间戳、日期、夏令时、冬令时
  18. 通信协议学习-485通信(1)
  19. 2022 年工业工程、人工智能、计算机和应用科学前沿国际会议RTIACA2022征稿通知
  20. vmware——vsphere 安装图形界面出现双鼠标问题(vsphere client 5.5)

热门文章

  1. list和map用法java,java 集合list和map的用法
  2. bash给脚本加进度条_进度条——shell脚本实现
  3. mysql sql 检测磁盘_MySQL 找到临时表用到磁盘的SQL
  4. (传送门)2/dev/null和/dev/null 21和21/dev/null
  5. (传送门)Ubuntu 常用软件安装
  6. elasticsearch best_fields most_fields cross_fields从内在实现看区别——本质就是前两者是以field为中心,后者是词条为中心...
  7. Elasticsearch: Five Things I was Doing Wrong
  8. 【思维导图总结——数据库系统概论】数据库安全性
  9. 1028 人口普查 (20 分)
  10. C#中用NPOI的excel导出