美文网首页
2019-02-21

2019-02-21

作者: 侯文虎 | 来源:发表于2019-02-21 14:01 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/gpyryqtx.html