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的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
python django 增删改查操作 数据库Mysql
Jul 27 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
python生成随机红包的实例写法
Sep 02 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
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
php弹出对话框实现重定向代码
2014/01/23 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python进阶篇之字典操作总结
2016/11/16 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
Python中常见的异常总结
2018/02/20 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
学术研讨会欢迎词
2015/01/26 职场文书
会议通知范文
2015/04/15 职场文书