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中type的构造函数参数含义说明
Jun 21 Python
Python使用turtule画五角星的方法
Jul 09 Python
python自动裁剪图像代码分享
Nov 25 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
python3.8下载及安装步骤详解
Jan 15 Python
Python面向对象程序设计之继承、多态原理与用法详解
Mar 23 Python
Pandas实现一列数据分隔为两列
May 18 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
python基于opencv实现人脸识别
Jan 04 Python
pandas 按日期范围筛选数据的实现
Feb 20 Python
python字典的元素访问实例详解
Jul 21 Python
Python极值整数的边界探讨分析
Sep 15 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中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python松散正则表达式用法分析
2016/04/29 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
用 Python 制作地球仪的方法
2020/04/24 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
公司门卫岗位职责
2014/03/15 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
土地转让协议书
2014/09/27 职场文书
班主任工作实习计划
2015/01/16 职场文书
不同意离婚上诉状
2015/05/23 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
Python中文纠错的简单实现
2021/07/07 Python
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记