如果你爬过拉勾网就知道拉勾网有点难爬。

不愧是一家专为互联网从业者提供工作机会的招聘网站……

所以拉勾网使用的是什么反爬机制呢?一个是cookie限制,另一个是IP访问频率限制。

我在这次的爬取中遇到的反爬不是cookie限制,而是IP访问频率被限制了。

解决反爬虫

我选择了拉勾网自带岗位栏中的“数据运营”岗。

在第一次的尝试爬取中我遇到了这样的问题……

查看一下返回的响应页面发现……

即使加了请求头,每次只要爬到第6条数据时就会跳出验证页面,这是因为拉勾网检测到了同一IP的访问频率过快,于是触发了验证机制,需要输入验证信息才能获取我们想要的页面信息。

对于IP访问频率限制,使用IP代理是最理想的应对方法,不过也可以使用time模块来降低访问频率,缺点是速度很慢,如果需要爬取的数据不是很多的话可以采取这种方法。

以下我采用了延长访问频率的方式来尝试获取“数据运营”岗的全部招聘信息,结果没有报错!

具体的方法是:使用random模块中randint()函数随机获取秒数,再用time模块中sleep()函数将程序暂停一下,将其设置在请求网站后即可。

import random,time
time.sleep(random.randint(10,15))

随机暂停的秒数设置在10~15s最好,因为我尝试过设置在5~10s结果还是被检测出来。

爬取拉勾网

爬取每个岗位以下招聘数据:

完整代码如下:

import requests,random,time,re
from bs4 import BeautifulSoup
import pandas as pd# 定义空列表,用于存储信息
job_all={}
company_content=[]
industry_content=[]
job_content=[]
experience_content=[]
education_content=[]
salary_content=[]
detail_content=[]
url_content=[]# 爬取1到8页的招聘信息
for i in range(1,9):url='https://www.lagou.com/guangzhou-zhaopin/shujuyunying/{}/'url=url.format(i)headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}res=requests.get(url,headers=headers,timeout=3)res.encoding=res.apparent_encodingsoup=BeautifulSoup(res.text,'html.parser')urls=soup.find_all('div',class_='p_top') # 提取当页招聘岗位的详情链接# 遍历每一个详情链接,提取招聘岗位的公司、行业、岗位、经验要求、学历要求、工资、职责和工作要求for url in urls:url=url.find('a')['href']rep=requests.get(url,headers=headers,timeout=3)time.sleep(random.randint(10,15)) # 延迟程序运行,应对反爬虫rep.encoding=rep.apparent_encodingsoup=BeautifulSoup(rep.text,'html.parser')company=soup.find('em',class_='fl-cn').text.strip() # 公司industry=soup.find('h4',class_='c_feature_name').text.strip() # 行业job=soup.find('h1',class_='name').text.strip() # 岗位detail=soup.find('div',class_='job-detail').text.strip() # 职责和工作要求request=soup.find('dd',class_='job_request') # 经验要求、学历要求和工资# 使用正则表达式进行提取request_match=re.match('^<dd .*?<span class=.*?>(.*?) </span>.*?span>/(.*?) /</span.*?span>(.*?) /</span.*?span>(.*?) /</span.*?span>(.*?)</span.*?h3>',str(request),re.S)experience=request_match.group(3) # 经验要求education=request_match.group(4) # 学历要求salary=request_match.group(1) # 工资# 添加岗位信息到列表company_content.append(company)industry_content.append(industry)job_content.append(job)experience_content.append(experience)education_content.append(education)salary_content.append(salary)detail_content.append(detail)url_content.append(url)job_all['公司']=company_content
job_all['行业']=industry_content
job_all['岗位']=job_content
job_all['经验']=experience_content
job_all['学历']=education_content
job_all['工资']=salary_content
job_all['职责和要求']=detail_content
job_all['详情链接']=url_contentdf=pd.DataFrame(job_all,columns=['公司','行业','岗位','经验','学历','工资','职责和要求','详情链接'])
df.to_excel('拉勾网数据运营岗.xlsx')

公众号:「Python编程小记」,持续推送学习分享,欢迎关注!

拉勾网爬取失败?试试这一招相关推荐

  1. 利用拉勾网爬取的数据查看当前的数据分析岗的市场行情

    通过拉勾网的数据分析数据分析行情 1.明确需求和目的 2.数据准备 3.数据处理 3.1 数据整合 3.1.1 加载相关的库包和数据集 3.1.2 数据概览 3.2 数据清洗 3.2.1 数据挑选与去 ...

  2. python数据分析工资_拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息...

    确定网页的加载方式是JavaScript加载 通过谷歌浏览器开发者工具分析和寻找网页的真实请求,确定真实数据在position.Ajax开头的链接里,请求方式是POST 使用requests的post ...

  3. python爬虫(常见爬取失败问题)

    在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用"网络数据采集",有时会把网络数据采集程序称为网络机器人(bots).最常用的方法是写 ...

  4. 什么你还不知道招聘信息,小唐来教你——最新2021爬取拉勾网招聘信息(一)

    文章目录 前言 一.准备我们的库 二.分析分析 三. 代码 四.数据展示 小唐的心路历程 上一篇:没有啦! 下一篇:什么你还不知道招聘信息,小唐来教你--最新2021爬取拉勾网招聘信息(二) 前言 有 ...

  5. python爬虫: 爬取拉勾网职位并分析

    文章目录 0. 前言 1. 用到的软件包 2. 解析网页 3. 数据清洗 4. 词云 5. 描述统计 6. 实证统计 7. 完整代码 7.1 爬虫部分的代码 7.2 数据分析部分的代码 0. 前言 本 ...

  6. Python爬虫:爬取拉勾网职位并分析

    大数据杂谈 一起行走数据江湖! 作者:闲庭信步 原文链接: https://blog.csdn.net/danspace1/article/details/80197106 如需转载,请联系原作者. ...

  7. 100%教会爬取全国保险业务员微信号码和拉勾网招聘数据

    下方两幅图是最近爬取某保险网站和拉勾的招聘数据,大家随意感受一下 Python爬虫人工智能教程: www.python88.cn 编程资源网:www.python66.cn 截图部分保险业务员微信二维 ...

  8. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

    原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...

  9. python爬虫代码1000行-几行Python代码爬取3000+上市公司的信息

    几行Python代码爬取3000+上市公司的信息 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 几行Python代码爬取3000+上市公司的信息.txt ] (友情提示:右键 ...

  10. 一个咸鱼的python_一个咸鱼的Python爬虫之路(三):爬取网页图片

    学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图. 所以我找了这个网站 http: ...

最新文章

  1. Windows 2008R2 RDS RmoteAPP安装及配置
  2. 5G与数据中心是新基建“耗电双雄”?事情不能这么看……
  3. 程序员面试宝典(Java)Beta6.0免费下载
  4. bat怎么获取前一天 的日期_bat脚本 得到前一天的日期
  5. C++ string 介绍
  6. js字符串方法、数组方法整理
  7. unity5 静态和动态cubmap
  8. Buffer.concat()
  9. Citrix 桌面云 XenApp_XenDesktop_7.18 部署
  10. python爬取网易云评论 超简单教程
  11. armv7l安卓刷linux,技术讲解-安卓APK快速生成后门(实现手机入侵)
  12. 武汉互联网公司和生活成本
  13. oracle 运行分钟,oracle 整点运行或每5分钟运行一次
  14. EXE转JPG后缀格式工具(真实JPG后缀)
  15. 用友系统服务器,用友财务系统需要什么云服务器
  16. 那些年,我用过的虚拟主机
  17. 线性方程组(五)- 线性方程组的解集
  18. 监控工具(nmon)下载及使用方法
  19. 【SSM学习】04-Maven高级
  20. 企业购买CRM时需要注意哪些要素

热门文章

  1. 计算机硬盘换,电脑硬盘可以随便换吗
  2. oracle 数据占百分比,占总数比例怎么算_占总金额百分比公式
  3. 【转载】阿里云域名解析将一个域名指向另一个域名
  4. 常见的几种隐藏文件的方法
  5. 类风湿性关节炎中的肠-关节轴
  6. Keil 5报错error C216: subscript on non-array or too many dimensions
  7. 一起学爬虫(Python) — 09
  8. IOI2015部分题解
  9. 爬虫练习网站 -http://quotes.toscrape.com的爬虫练习
  10. 笔记本电脑显示dns服务器出错,电脑出现dns错误无法上网的解决方法详解