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写asp详细讲解
Dec 16 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
python机器学习之贝叶斯分类
Mar 26 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
Python实现决策树C4.5算法的示例
May 30 Python
django用户登录验证的完整示例代码
Jul 21 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
postman和python mock测试过程图解
Feb 22 Python
Django import export实现数据库导入导出方式
Apr 03 Python
基于PyTorch实现一个简单的CNN图像分类器
May 29 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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
杏林同学录(七)
2006/10/09 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Django中的forms组件实例详解
2018/11/08 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
python函数与方法的区别总结
2019/06/23 Python
python时间日期操作方法实例小结
2020/02/06 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
python 实现两个npy档案合并
2020/07/01 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
python regex库实例用法总结
2021/01/03 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
什么是唯一索引
2015/07/05 面试题
新学期开学演讲稿
2014/05/24 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
2014年实习期工作总结
2014/11/27 职场文书
公司庆典欢迎词
2015/01/26 职场文书
工会工作个人总结
2015/03/03 职场文书
运动会主持词大全
2015/07/02 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书