2019-02-21

python爬取拉勾搜索内容出现操作太频繁的返回结果

看到一个群里有人在问爬取拉勾网不成功,出现操作太频繁的回复,拉勾的搜索是不用登陆就能搜出来的,根据经验判断应该是cookie的问题

{'status': False, 'msg': '您操作太频繁,请稍后再访问', 'clientIp': '183.156.110.100', 'state': 2402}

访问的url是https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E6%B7%B1%E5%9C%B3&needAddtionalResult=false

从对方的代码看cookie也加到headers中了,为啥还是不行呢?复制了对方的小脚本运行了下,确实是这么回事。

从几次刷新中发现,cookie部分数据是变化的,其中SEARCH_ID每次都会更改,查看程序访问的url没有时没有设置cookie,再看第一次访问的url:https://www.lagou.com/jobs/list_python?px=default&city=%E6%B7%B1%E5%9C%B3设置了SEARCH_ID,问题就应该出现在这里。

那如何从前一个url访问后拿取cookie呢,这就要用到requests.session了,另外referer也不能少的,少了一样出出现操作太频繁的回复的,对方代码中有referer了,就少踩个坑喽,代码如下:

import requests

data ={

"first":"true",

    "pn":"1",

    "kd":"python"

}

cookie_dict =dict()

s = requests.Session()

s.cookies.update(cookie_dict)

headers ={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36",

          'Referer':'https://www.lagou.com/jobs/list_python?px=default&city=%E6%B7%B1%E5%9C%B3',

          }

s.get('https://www.lagou.com/jobs/list_python?px=default&city=%E6%B7%B1%E5%9C%B3', headers=headers)

response=requests.post('https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E6%B7%B1%E5%9C%B3&needAddtionalResult=false', data=data, headers=headers)

print(response.json())

你可能感兴趣的:(2019-02-21)