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模拟登录的多种方法(四种)
Jun 01 Python
Python wxpython模块响应鼠标拖动事件操作示例
Aug 23 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
Python Process多进程实现过程
Oct 22 Python
python with语句的原理与用法详解
Mar 30 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
python绘图模块之利用turtle画图
Feb 12 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
基于PyTorch实现一个简单的CNN图像分类器
May 29 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 05 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
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
Python命令启动Web服务器实例详解
2017/02/23 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
Python 实现数组相减示例
2019/12/27 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
新东网科技Java笔试题
2012/07/13 面试题
新闻专业推荐信范文
2013/11/20 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
事业单位年度考核评语
2014/12/31 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
SQL中的三种去重方法小结
2021/11/01 SQL Server