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计算书页码的统计数字问题实例
Sep 26 Python
Python编程中的反模式实例分析
Dec 08 Python
通过代码实例展示Python中列表生成式的用法
Mar 31 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
Python线程协作threading.Condition实现过程解析
Mar 12 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
Django入门使用示例
2017/12/12 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
详解Python的循环结构知识点
2019/05/20 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
用python实现名片管理系统
2020/06/18 Python
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
印刷工程专业应届生求职信
2013/09/29 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
节约用电倡议书
2015/04/28 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书