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脚本日志功能
Aug 14 Python
对pandas replace函数的使用方法小结
May 18 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
Django视图扩展类知识点详解
Oct 25 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
Python pip配置国内源的方法
Feb 14 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
python+opencv边缘提取与各函数参数解析
Mar 09 Python
python中yield的用法详解
Jan 13 Python
Python一些基本的图像操作和处理总结
Jun 23 Python
Python中npy和mat文件的保存与读取
Apr 24 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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
基于树莓派的语音对话机器人
2019/06/17 Python
python async with和async for的使用
2019/06/20 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
python plotly绘制直方图实例详解
2019/07/22 Python
简单的Python调度器Schedule详解
2019/08/30 Python
python数字类型math库原理解析
2020/03/02 Python
一些Solaris面试题
2013/03/22 面试题
Laravel中Kafka的使用详解
2021/03/24 PHP
挂职思想汇报
2013/12/31 职场文书
手机被没收的检讨书
2014/10/04 职场文书
诉讼授权委托书
2014/10/15 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
草房子读书笔记
2015/06/29 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android
Python中异常处理用法
2021/11/27 Python
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python