python使用requests库爬取拉勾网招聘信息的实现


Posted in Python onNovember 20, 2020

按F12打开开发者工具抓包,可以定位到招聘信息的接口

python使用requests库爬取拉勾网招聘信息的实现

在请求中可以获取到接口的url和formdata,表单中pn为请求的页数,kd为关请求职位的关键字

python使用requests库爬取拉勾网招聘信息的实现

python使用requests库爬取拉勾网招聘信息的实现

使用python构建post请求

data = {
  'first': 'true',
  'pn': '1',
  'kd': 'python'
}

headers = {
  'referer': 'https://www.lagou.com/jobs/list_python/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput=',
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}

res = requests.post("https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false", data=data,headers=headers)
print(res.text)

发现没有从接口获取到数据

python使用requests库爬取拉勾网招聘信息的实现

换了个网络后接口还是会返回操作频繁的错误信息,仔细检查后发现这个接口需要一个动态的cookies不然会一值返回错误频繁

data = {
  'first': 'true',
  'pn': '1',
  'kd': 'python'
}

#头部中必须有user-agent和referer不然不会返回cookies
headers = {
  'referer': 'https://www.lagou.com/jobs/list_python/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput=',
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}

#通过访问主页获取cookies
r1= requests.get("https://www.lagou.com/jobs/list_python/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput='",headers=headers)

#再post请求中传入cookies
r2 = requests.post("https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false", data=data,headers=headers, cookies=r2.cookies)
print(r2.text)

注意!每请求十次接口cookies也会刷新一次,下面贴上完整爬虫代码

import json
import logging

import requests

#获取cookie
def getCookie():
  res = requests.get("https://www.lagou.com/jobs/list_python/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput=",
        headers=headers)
  return res.cookies

#获取json数据
def getPage(i, cookies, kw):
  data = {
    'first': 'true',
    'pn': i,
    'kd': kw
  }
  res = requests.post("https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false", data=data,
             headers=headers, cookies=cookies)
  return json.loads(res.text)

#合并列表
def reduceList(l):
  text = ""
  for i in l:
    text += i + " "
  return text.strip()

#提取字段并保存到文件中
def saveInCsv(f, data):
  js = data["content"]["positionResult"]["result"]
  for node in js:

    # 对空值进行处理
    district = node["district"]
    if district != None:
      district = "-" + district
    else:
      district = ""

    f.write(
      node["positionName"] + "·" + node["city"] + district + "·" + node[
        "salary"] + "·" +
      node["workYear"] + "·" + node["education"] + "·" + reduceList(node["skillLables"]) + "·" +
      node["companyShortName"] + "·" + node["companySize"] + "·" + node["positionAdvantage"] + "\n")

if __name__ == '__main__':
  #定义头部
  headers = {
    'referer': 'https://www.lagou.com/jobs/list_python/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput=',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
  }

  #初始化cookie
  cookies = getCookie()

  with open("file.csv", "w", encoding="utf-8") as f:
    for i in range(1, 31):
      #每十个请求重新获取cookie
      if (i % 10 == 0):
        cookies = getCookie()

      #解析字段并存储
      data = getPage(i, cookies, "python")
      saveInCsv(f, data)

到此这篇关于python使用requests库爬取拉勾网招聘信息的实现的文章就介绍到这了,更多相关python requests爬取拉勾网内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
Python命名空间详解
Aug 18 Python
Python手机号码归属地查询代码
May 04 Python
python机器学习之贝叶斯分类
Mar 26 Python
pandas取出重复数据的方法
Jul 04 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
Python动态声明变量赋值代码实例
Dec 30 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
Spy++的使用方法及下载教程
Jan 29 Python
python爬取天气数据的实例详解
Nov 20 #Python
python爬取招聘要求等信息实例
Nov 20 #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
You might like
用PHP书写安全的脚本代码
2012/02/05 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
jQuery的css()方法用法实例
2014/12/24 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
python使用cookie库操保存cookie详解
2014/03/03 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
新员工培训个人的自我评价
2013/10/09 职场文书
聊城大学毕业生自荐书
2014/02/01 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
军训考核自我鉴定
2014/02/13 职场文书
知识竞赛主持词
2014/03/26 职场文书
工作检讨书怎么写
2015/01/23 职场文书
会议主持人开场白台词
2015/05/28 职场文书
被委托人身份证明
2015/08/07 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis