拉勾网的反爬介绍和解决方法(更新时间:2019/2/20)

article/2025/7/11 9:49:24

拉勾网的反爬介绍和解决方法(更新时间:2019/2/20)

目录直达:

文章目录

  • 拉勾网的反爬介绍和解决方法(更新时间:2019/2/20)
    • 1. 前言
    • 2. 简述
    • 3. 反爬介绍
      • 3.1、对于职位的详情页和公司的详情页的反爬:
      • 3.2、对于职位列表页的反爬:
      • 3.3、注意:

1. 前言

最近拉勾的反爬改动比较频繁,公司采集拉勾网的爬虫又无法正式运行,花了近一周的时间来处理拉勾网的反爬问题,特别写一篇博客来记录一下拉勾的反爬

2. 简述

爬拉勾的时候,主要是采集职位相关的信息,涉及到页面有3个:

  1. 输入关键词搜索后得到的职位列表页:https://www.lagou.com/jobs/list_python?px=new&city=%E4%B8%8A%E6%B5%B7#order
  2. 职位详情页:https://www.lagou.com/jobs/5371803.html
  3. 公司详情页:https://www.lagou.com/gongsi/225514.html

3. 反爬介绍

3.1、对于职位的详情页和公司的详情页的反爬:

职位的详情页公司的详情页的信息都能在页面源代码中获取到,请求这两个页面也没有使用太多反爬,只需要在请求的时候加入headers参数即可,不过前提是你知道页面的URL,即你需要在职位列表页中获取到职位id和公司id,才能拼接URL,得到相关的职位详情页和公司详情页

3.2、对于职位列表页的反爬:

要获取职位列表的信息,相对于比职位和公司的详情页,难度的要大一点


列表页使用了ajax加载,直接去请求原网页是获取不到想要的信息,我们打开网页:https://www.lagou.com/jobs/list_java?labelWords=&fromSearch=true&suginput=?labelWords=hot,看一下源代码

image

源代码没有我们需要的数据,但是网页上有显示数据,那么数据肯定是以别的方式传过来的,我们找一下数据,看哪个请求中有返回有我们需要的数据,看下找到的请求,按一下F12进入开发者模式,再点击Network–>XHR–>点击第一个请求–>response

image

这里返回的是一个json的可是,里面有我们需要的信息(按ctrl+F搜索关键字验证信息是否在返回的数据中)

既然找到我们需要的数据,那么如何让爬虫来获取到呢,点击Headers,我们看一下请求头,发现是个post请求,直接去构造请求来访问这个接口,发现返回的是

{"status":false,"msg":"您操作太频繁,请稍后再访问","clientIp":"183.160.238.206","state":2402}

并不是你访问频繁,是因为网站对cookies设置了反爬,cookies每次访问都会发生变化,想要获取这个接口的数据,需要请求2次,第一次请求的页面是源代码那个页面(即:https://www.lagou.com/jobs/list_java?labelWords=&fromSearch=true&suginput=?labelWords=hot),直接get请求这个页面,虽然不能直接获取到需要的数据,但是能获取到cookies,服务器返回的时候会返回一个cookies参数,来更新cookies,我们在把更新后的cookies,放到post请求的参数中,就可以获取到接口的数据了

image

我们看一下成功请求的代码:

import requests
'''
说明:本代码只是测试,你能够使用它获得一次请求的数据,需要连续请求还请修改代码'''
headers = {'Connection': 'keep-alive','Cache-Control': 'max-age=0','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
}
response = requests.get('https://www.lagou.com/jobs/list_?city=%E4%B8%8A%E6%B5%B7&cl=false&fromSearch=true&labelWords=&suginput=',headers=headers)  # 请求原网页
r = requests.utils.dict_from_cookiejar(response.cookies)  # 获取cookies
r["user_trace_token"] = r["LGRID"]
r["LGSID"] = r["LGRID"]
r["LGUID"] = r["LGRID"]  # 构造cookies的参数
cookies = {'X_MIDDLE_TOKEN': '797bc148d133274a162ba797a6875817','JSESSIONID': 'ABAAABAAAIAACBI03F33A375F98E05C5108D4D742A34114','_ga': 'GA1.2.1912257997.1548059451','_gat': '1','Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6': '1548059451','user_trace_token': '20190121163050-dbd72da2-1d56-11e9-8927-525400f775ce','LGSID': '20190121163050-dbd72f67-1d56-11e9-8927-525400f775ce','PRE_UTM': '','PRE_HOST': '','PRE_SITE': '','PRE_LAND': 'https%3A%2F%2Fwww.lagou.com%2F%3F_from_mid%3D1','LGUID': '20190121163050-dbd73128-1d56-11e9-8927-525400f775ce','_gid': 'GA1.2.1194828713.1548059451','index_location_city': '%E5%85%A8%E5%9B%BD','TG-TRACK-CODE': 'index_hotjob','LGRID': '20190121163142-fb0cc9c0-1d56-11e9-8928-525400f775ce','Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6': '1548059503','SEARCH_ID': '86ed37f5d8da417dafb53aa25cd6fbc0',
}
cookies.update(r)  # 更新接口的cookies
headers = {'Origin': 'https://www.lagou.com','X-Anit-Forge-Code': '0','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Accept': 'application/json, text/javascript, */*; q=0.01','Referer': 'https://www.lagou.com/jobs/list_java?px=new&city=%E4%B8%8A%E6%B5%B7','X-Requested-With': 'XMLHttpRequest','Connection': 'keep-alive','X-Anit-Forge-Token': 'None',
}params = (('px', 'new'),('city', '\u4E0A\u6D77'),('needAddtionalResult', 'false'),
)data = {'first': True,'kd': 'java','pn': 1}
response = requests.post('https://www.lagou.com/jobs/positionAjax.json', headers=headers, params=params,cookies=cookies, data=data)  # 请求接口
print(response.json())

3.3、注意:

  1. 这样可以单次请求接口获取到数据,每次请求接口之前都要请求原网页,以获取cookies
  2. 每次请求列表页数据接口的时间间隔保持在1秒以上,不然可能会被封ip

http://chatgpt.dhexx.cn/article/QoPxWde4.shtml

相关文章

应对反爬如何爬取拉勾网信息(非常详细)

目录 前期准备请求头Cookies问题手动提取Cookies和自动Cookies相结合自动提取Cookies实现 手动提取Cookies实现 页面分析代码实现 前期准备 我们知道百度其实就是一个爬虫,但是对方的服务器是没有对百度进行反爬的,所以为了防止对方服务器的反爬&#x…

【Python】模拟登陆并抓取拉勾网信息(selenium+phantomjs)

环境 python3.5pip install seleniumphantomjs-2.1.1pip install pyquery 代码 # -*- coding:utf-8 -*-# 防止print中文出错 import time import sys import io sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodinggb18030)from pyquery import PyQuery as pq from se…

Python爬虫实战,requests模块,Python实现拉勾网求职信息数据分析与可视化

前言 利用requests爬取拉勾网求职信息数据分析与可视化,废话不多说。 让我们愉快地开始吧~ 开发工具 **Python版本:**3.6.4 相关模块: requests模块; re模块; os模块 jieba模块; pandas模块 num…

爬虫学习之17:爬取拉勾网网招聘信息(异步加载+Cookie模拟登陆)

很多网站需要通过提交表单来进行登陆或相应的操作,可以用requests库的POST方法,通过观测表单源代码和逆向工程来填写表单获取网页信息。本代码以获取拉勾网Python相关招聘职位为例作为练习。打开拉钩网,F12进入浏览器开发者工具,可…

python成功爬取拉勾网——初识反爬(一个小白真实的爬取路程,内容有点小多)

python成功爬取拉勾网(一个小白的心里路程) 最开始想爬取拉钩是因为半年前上python实验课的时候,老师给了两个任务,一个时爬取糗百的笑话内容,另一个时爬取拉勾网的职位信息,当时因为课时紧张的缘故&#…

爬虫实例二:爬取拉勾网招聘信息

爬虫实例二:爬取拉勾网招聘信息 如果是第一次看本教程的同学,可以先从一开始: 爬虫实例一:爬取豆瓣影评 欢迎关注微信公众号:极简XksA 微信账号:xksnh888 转载请先联系微信号:zs820553471 …

python爬虫之爬取拉勾网

这次要爬取拉勾网,拉勾网的反爬做的还是很不错的啊,因为目标网站是Ajax交互的我一开始是直接分析json接口来爬取的,但是真的很麻烦,请求头一旦出点问题就给识别出来了后续我就改了一下方法用selenium来模拟浏览器去获取 招聘求职…

爬虫练习六:爬取拉勾招聘信息

1. 明确需求 1. 初学爬虫时,看着各路大佬以拉勾网为案例进行爬虫讲解,自己也这样尝试。结果因为个人水平实在太低,很快就触发反爬虫机制,甚至连个人的账号都被封禁。所以这次想要重新挑战一下,爬取拉勾展示的招聘数据。…

用接口登录拉勾网

前段时间一直忙于公司项目的测试工作导致一周多没有撸代码,所以今天通过悠悠是博客学习了一下如何让用接口登录拉勾网 下面介绍一下吧!分享下经验以及心得,,虽然我知道也没什么人会看! 首先呢要先登录拉钩网的网站&am…

拉勾网登录问题

拉钩登录问题,在参考别人的博客后,解决啦 class lagouSpider(CrawlSpider):name lagouallowed_domains [www.lagou.com]start_urls [https://www.lagou.com/]agent "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/" \"537.36 (…

selenium实例登陆拉勾网 外加手动验证验证码

selenium模拟登陆拉钩网 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import os, json, time from urllib import parse from lxml import etree from fake_…

python -- 拉勾网爬虫模拟登录

入门爬虫一段时间,最近在做一个拉勾网的数据爬虫分析,项目也快接近尾声了,于是抽个时间写一下这个项目中遇到的一些问题。 目前拉勾网的反爬虫机制还是可以的,一开始用scrapy shell 分析拉勾网,发现拉勾网要校验usera…

基于Python的拉勾网的模拟登录获取cookie

lagou_login 拉勾网的模拟登录获取cookie,为爬虫做准备, 喜欢的点个赞,谢谢 入门爬虫一段时间,最近在做一个拉勾网的数据爬虫分析,项目也快接近尾声了,于是抽个时间写一下这个项目中遇到的一些问题。 目前拉勾网的反…

selenium模拟登陆拉勾网

初学selenium,尝试了一下模拟登录拉勾网,感觉还挺好玩的 就剩下最后的验证码不会处理了。。。 思路就是在网页代码中找到对应的框的属性进行查询,然后点击、输入就进行了。 之后就会看到Chrome弹出来自动完成一系列动作,感觉很…

如何高效地学习编程语言?

学习编程语言是一种技巧:做好了,你会感受到掌握新事物之后的快感;做不好,就会接二连三的沮丧,甚至放弃。下面我将介绍一些技巧与方法,以便帮助大家高效地学习。 持续测试自己以抵抗胜任力错觉 最不济的学习…

完全零基础,到底该怎样学习编程?

学习编程的过程,大致如下: 看书、看博客、学课程或者看视频等 模仿着书上或者博客的代码,进行复现,复现不重要,思考才是关键 ⚠️ 思考学习别人思路后,脱离书本和博客,完全自己实现功能 自己…

学习编程先学什么?怎么学习编程?

怎么学习编程 随着IT行业的快速发展,现在越来越多的人看中IT行业的前景,很多的人选择IT行业。其中大部分人会选择了学习编程语言,那么,怎么学习编程语言、学习编程先学什么就是人们最常遇到的困难,因此,小编…

我是如何学习编程的

我是如何学编程的 前世因今世果一轮回一回眸理论基础资源选择编程没有捷径合格程度兴趣培养学习时长解决问题推荐资源 学习资源推荐 微信扫码关注公众号 :前端前端大前端,追求更精致的阅读体验 ,一起来学习啊关注后发送关键资料,免费获取一整…

骨灰级程序员告诉你,怎样学习编程,才能快速从0基础,变成编程大师

本文章向大家介绍怎样学习编程,才能快速从0基础,变成编程大师,主要包括骨灰级程序员告诉你,怎样学习编程,才能快速从0基础,变成编程大师使用实例、应用技巧、基本知识点总结和需要注意事项,具有…

新手如何学习编程?

文章来源:微信公众号丨代码情缘 这篇文章就和大家简单聊聊,如何学习编程? 2021 年内卷、躺平从一个小圈子话题快速升温为社会话题,其实很多人都想过躺平,那么首先问一下自己,有什么资本躺平? …