python爬取招聘要求等信息实例


Posted in Python onNovember 20, 2020

在我们人生的路途中,找工作是每个人都会经历的阶段,小编曾经也是苦苦求职大军中的一员。怀着对以后的规划和想象,我们在找工作的时候,会看一些招聘信息,然后从中挑选合适的岗位。不过招聘的岗位每个公司都有不少的需求,我们如何从中获取数据,来进行针对岗位方面的查找呢?

大致流程如下:

1.从代码中取出pid

2.根据pid拼接网址 => 得到 detail_url,使用requests.get,防止爬虫挂掉,一旦发现爬取的detail重复,就重新启动爬虫

3.根据detail_url获取网页html信息 => requests - > html,使用BeautifulSoup

若爬取太快,就等着解封

if html.status_code!=200 print('status_code if {}'.format(html.status_code))

4.根据html得到soup => soup

5.从soup中获取特定元素内容 => 岗位信息

6.保存数据到MongoDB中

代码:

# @author: limingxuan 
# @contect: limx2011@hotmail.com
# @blog: https://www.jianshu.com/p/a5907362ba72
# @time: 2018-07-21
import requests
from bs4 import BeautifulSoup
import time
from pymongo import MongoClient
headers = {  
  'accept': "application/json, text/javascript, */*; q=0.01",
  'accept-encoding': "gzip, deflate, br",
  'accept-language': "zh-CN,zh;q=0.9,en;q=0.8",
  'content-type': "application/x-www-form-urlencoded; charset=UTF-8",
  'cookie': "JSESSIONID=""; __c=1530137184; sid=sem_pz_bdpc_dasou_title; __g=sem_pz_bdpc_dasou_title; __l=r=https%3A%2F%2Fwww.zhipin.com%2Fgongsi%2F5189f3fadb73e42f1HN40t8~.html&l=%2Fwww.zhipin.com%2Fgongsir%2F5189f3fadb73e42f1HN40t8~.html%3Fka%3Dcompany-jobs&g=%2Fwww.zhipin.com%2F%3Fsid%3Dsem_pz_bdpc_dasou_title; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1531150234,1531231870,1531573701,1531741316; lastCity=101010100; toUrl=https%3A%2F%2Fwww.zhipin.com%2Fjob_detail%2F%3Fquery%3Dpython%26scity%3D101010100; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1531743361; __a=26651524.1530136298.1530136298.1530137184.286.2.285.199",
  'origin': "https://www.zhipin.com",
  'referer': "https://www.zhipin.com/job_detail/?query=python&scity=101010100",
  'user-agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
  }
conn = MongoClient('127.0.0.1',27017)
db = conn.zhipin_jobs
def init():
  items = db.Python_jobs.find().sort('pid')
  for item in items:
    if 'detial' in item.keys(): #当爬虫挂掉时,跳过已爬取的页
      continue
    detail_url = 'https://www.zhipin.com/job_detail/{}.html'.format(item['pid']) #单引号和双引号相同,str.format()新格式化方式
    #第一阶段顺利打印出岗位页面的url
    print(detail_url)
    #返回的html是 Response 类的结果
    html = requests.get(detail_url,headers = headers)
    if html.status_code != 200:
      print('status_code is {}'.format(html.status_code))
      break
    #返回值soup表示一个文档的全部内容(html.praser是html解析器)
    soup = BeautifulSoup(html.text,'html.parser')
    job = soup.select('.job-sec .text')
    print(job)
    #???
    if len(job)<1:
    item['detail'] = job[0].text.strip() #职位描述
    location = soup.select(".job-sec .job-location .location-address") 
    item['location'] = location[0].text.strip() #工作地点
    item['updated_at'] = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) #实时爬取时间
    #print(item['detail'])
    #print(item['location'])
    #print(item['updated_at'])
    res = save(item) #调用保存数据结构
    print(res)
    time.sleep(40)#爬太快IP被封了24小时==
#保存数据到MongoDB中
def save(item):
  return db.Python_jobs.update_one({'_id':item['_id']},{'$set':item}) #why item ???
   
# 保存数据到MongoDB
     
if __name__ == '__main__':
  init()

最终结果就是在MongoBooster中看到新增了detail和location的数据内容

python爬取招聘要求等信息实例 

到此这篇关于python爬取招聘要求等信息实例的文章就介绍到这了,更多相关python爬虫获取招聘要求的代码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python脚本实现网卡流量监控
Feb 14 Python
python类装饰器用法实例
Jun 04 Python
Python实现命令行通讯录实例教程
Aug 18 Python
一个Python最简单的接口自动化框架
Jan 02 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
Python 读取指定文件夹下的所有图像方法
Apr 27 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
Django restframework 源码分析之认证详解
Feb 22 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
详解Python中的Lock和Rlock
Jan 26 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 #Python
Python getsizeof()和getsize()区分详解
Nov 20 #Python
Python析构函数__del__定义原理解析
Nov 20 #Python
Python request post上传文件常见要点
Nov 20 #Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 #Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 #Python
Django vue前后端分离整合过程解析
Nov 20 #Python
You might like
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
php实现RSA加密类实例
2015/03/26 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
jQuery使用手册之一
2007/03/24 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
Python实现简单的2048小游戏
2021/03/01 Python
联强国际笔试题面试题
2013/07/10 面试题
数据管理员的自我评价分享
2013/11/15 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
教师批评与自我批评
2014/10/15 职场文书
慈善募捐倡议书
2015/04/27 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
使用CSS连接数据库的方式
2022/02/28 HTML / CSS