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)

 

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值