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 爬虫学习笔记之多线程爬虫
Sep 21 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
Python 分享10个PyCharm技巧
Jul 13 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 Python
python中__slots__节约内存的具体做法
Jul 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
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
JS中图片压缩的方法小结
2017/11/14 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
Python 对象中的数据类型
2017/05/13 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python3下载抖音视频的完整代码
2019/06/05 Python
用python计算文件的MD5值
2020/12/23 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
怎样从/向数据文件读/写结构
2014/11/23 面试题
常见的软件开发流程有哪些
2015/11/14 面试题
国家助学金获奖感言
2014/01/31 职场文书
环保倡议书50字
2014/05/15 职场文书
校运会口号
2014/06/18 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
委托证明范本
2014/11/25 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
安全教育观后感
2015/06/17 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
python基于机器学习预测股票交易信号
2021/05/25 Python
Spring中bean集合注入的方法详解
2022/07/07 Java/Android