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用来获得图片exif信息的库实例分析
Mar 16 Python
Python对list列表结构中的值进行去重的方法总结
May 07 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
Python探索之pLSA实现代码
Oct 25 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
详解python校验SQL脚本命名规则
Mar 22 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
Python文件操作函数用法实例详解
Dec 24 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 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类的使用 实例代码讲解
2009/12/28 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
python文件及目录操作代码汇总
2020/07/08 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
《莫高窟》教学反思
2014/02/25 职场文书
消防安全宣传标语
2014/06/07 职场文书
普通话宣传标语
2014/06/26 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
建设工程授权委托书
2014/09/22 职场文书
十佳少年事迹材料
2014/12/25 职场文书
工作岗位职责范本
2015/02/15 职场文书
金陵十三钗观后感
2015/06/04 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技