python 爬拉勾网之”您操作太频繁,请稍后访问“

爬拉钩的时候发现平常的爬取思路走不通,往headers里边加上cookie,Referer,Accept,User_Agent之后返回的responsre都是“status    false msg    "您操作太频繁,请稍后再访问" clientIp    "117.136.107.190"”,然后就把参数更详细的添加进去发现也不好用,然后查资料看到了别人用requests,尝试了一下果然可以。

仔细看琢磨一下拉钩的网页发现它加载的时候有一个url专门返回除了招聘信息以外的其它东西,加载招聘信息的时候会产生另外一个ajax请求,请求返回的正是我们想要的内容,只需要在先发送主请求,之后用requests.Session()建立Session,建立完成session之后通过session来获取cookie,拿到cookie就可以直接用了,但是这种相当于每次循环都打开一次浏览器,效果还不是很理想。

参考:https://blog.csdn.net/m0_43400362/article/details/88396490

源码如下:

import requests
import time
def main(pages):
    # 主url
    url1 = 'https://www.lagou.com/jobs/list_python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput='
    # ajax请求
    url = "https://www.lagou.com/jobs/positionAjax.json?px=default&needAddtionalResult=false"
    # 请求头
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Referer': 'https://www.lagou.com/jobs/list_python?px=default&city=%E5%85%A8%E5%9B%BD',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
        'Host': 'www.lagou.com'
    }
    # 通过data来控制翻页
    
    for page in range(1, pages):
        data = {
            'first': 'false',
            'pn': page,
            'kd': 'python'
        }
        s = requests.Session() # 建立session
        s.get(url=url1, headers=headers, timeout=3)
        cookie = s.cookies # 获取cookie
        respon = s.post(url = url, headers=headers, data=data, cookies=cookie, timeout=3)
        time.sleep(7)
        print(respon.text)

 

你可能感兴趣的:(python爬虫)