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 相关文章推荐
Pycharm学习教程(1) 定制外观
May 02 Python
遗传算法之Python实现代码
Oct 10 Python
详解python中asyncio模块
Mar 03 Python
dataframe设置两个条件取值的实例
Apr 12 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
Python列表推导式与生成器用法分析
Aug 02 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python+OpenCV感兴趣区域ROI提取方法
Jan 10 Python
python manage.py runserver流程解析
Nov 08 Python
Django使用rest_framework写出API
May 21 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 Python
python 如何对logging日志封装
Dec 02 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下10件你也许并不了解的事情
2008/09/11 PHP
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
jquery.validate使用详解
2016/06/02 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
python装饰器实例大详解
2017/10/25 Python
用pycharm开发django项目示例代码
2018/10/24 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
Python telnet登陆功能实现代码
2020/04/16 Python
python实现图片素描效果
2020/09/26 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
什么是抽象
2015/12/13 面试题
生产部统计员岗位职责
2014/01/05 职场文书
个人优缺点自我评价
2014/01/27 职场文书
社区工作者感言
2014/03/02 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
催款函范文
2015/06/24 职场文书
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang
Python之matplotlib绘制饼图
2022/04/13 Python