拉勾网的职位界面使用ajax技术,在原网页代码无法获取搜索的职位信息。
1.抓包分析 ,
!
通过反复观察,找到了信息职位的界面,根据这个数据包的信息制作头部信息
headers = {
'User-Agent': random_user, #随机用户
"Referer":"https://www.lagou.com/jobs/list_python/",# 从哪个访问过来
"X-Anit-Forge-Token":"None",
"X - Anit - Forge - Code": "0",
"X - Requested - With":"XMLHttpRequest"
}
制作表单
data = {
"first":"true",
"pn":1, # 这里是页码
"kd":"python"
}
response = requests.post(url_2, headers=get_headers(), data=data,proxies=proxies_ip,timeout=5)
print(response.json())`
请求后提示
{‘status’: False, ‘msg’: ‘您操作太频繁,请稍后再访问’, ‘clientIp’: ‘171.35.148.185’, ‘state’: 2402}
2.分析这里请求头除了cookie信息没有添加其余都加入进去,本来想着用手动复制,但是复制进入报头后是这样
天哪,好长的cookie,一点点整理,删除空格换行符实在是太麻烦了,懒得手动去弄(其实主要原因是cookie是会失效的,如果失效后每次都手动修改,这也太那啥了。。。),作为一个天才的程序员(自夸下),肯定有其他什么办法的。想起来之前看的关于cookie和session,一句话概括,大概就是http是无状态协议,我们第一次访问的时候会产生一个cookie,网站服务器的session会把session_ID 添加到cookie里在把cookie发送会给访问者,这样下次再次访问网站滴时候再次发送cookie,网站获取到了cookie里的session_ID就知道了访问者是之前的那位,那么思路就有了,查下找session的相关文档
3.找到了相关代码,用session访问网站静态页面网站返回的cooike添加到报头里
session = requests.session() # 访问session,打开session
session.get(url_1,headers = get_headers())# 打开静态网页,讲cookie放入session
cookies = session.cookies # 赋值session中的cookies
cookies = cookies.get_dict()# 类转换成字典
print(cookies)
4.打印出来获取到了发现获取到了cookie,把我们的cookie加入请求在访问网站的数据动态网页
response = requests.post(url_2, headers=get_headers(), data=data,proxies=proxies_ip,cookies=cookies,timeout=5)
if response.status_code == 200:
print(response.json())
获取到了网站数据,我厉害不厉害。。。快给我点赞