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读写文件操作示例程序
Dec 02 Python
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
python 内置函数filter
Jun 01 Python
windows 下python+numpy安装实用教程
Dec 23 Python
python更改已存在excel文件的方法
May 03 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
python设定并获取socket超时时间的方法
Jan 12 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
python基于opencv批量生成验证码的示例
Apr 28 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在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
mongodb和php的用法详解
2019/03/25 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
Python实现的归并排序算法示例
2017/11/21 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
python 8种必备的gui库
2020/08/27 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
英语专业个人求职自荐信
2013/09/21 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
黄金酒广告词
2014/03/21 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
创业计划书之面包店
2019/09/12 职场文书