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中使用item()方法遍历字典的例子
Aug 26 Python
python获取局域网占带宽最大3个ip的方法
Jul 09 Python
python中list列表的高级函数
May 17 Python
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
详解Django 时间与时区设置问题
Jul 23 Python
Python小程序 控制鼠标循环点击代码实例
Oct 08 Python
python框架flask表单实现详解
Nov 04 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Python爬虫之Selenium实现窗口截图
Dec 04 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
JQuery toggle使用分析
2009/11/16 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
js实现一键复制功能
2017/03/16 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
layui使用数据表格实现购物车功能
2019/07/26 Javascript
Python中文件操作简明介绍
2015/04/13 Python
python3.x实现发送邮件功能
2018/05/22 Python
python语音识别实践之百度语音API
2018/08/30 Python
简单了解python的一些位运算技巧
2019/07/13 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
C和C++经典笔试题附答案解析
2014/08/18 面试题
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
企业消防安全责任书
2014/07/23 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
考研导师推荐信范文
2015/03/27 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技