爬虫返回状态码“521” 解决方案 | 设置Cookie解决

问题:在爬虫某个网页时,返回状态码为”521“,如何解决?

Code:

import requests

def get_one_page(url):
    headers = {
        'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    print(response.status_code)
    print(response.text)
    if response.status_code == 200:
        return response.text
    return None

def main():
    url = 'http://sou.chinanews.com/search.do?q=社会责任报告'
    html = get_one_page(url)
    print(html)

if __name__ == "__main__":
    main()
521
<script>document.cookie=('_')+('_')+('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('=')+(-~[]+'')+([2]*(3)+'')+(+!+[]+'')+(2+6+'')+(0+1+0+1+'')+((+true)+'')+((1|2)+'')+(3+3+'')+((1+[0])/[2]+'')+(~~[]+'')+('.')+(-~0+'')+((+[])+'')+(0+1+0+1+'')+('|')+('-')+(-~[]+'')+('|')+('v')+('Q')+((+true)+'')+('%')+(1+1+'')+('F')+(9+'')+('o')+('U')+('C')+('e')+('k')+('F')+('j')+('M')+('g')+('u')+('I')+('S')+('U')+('c')+(-~[6]+'')+('t')+('p')+('Z')+((1+[4]>>1)+'')+('T')+('w')+('M')+('%')+(1+2+'')+('D')+(';')+('m')+('a')+('x')+('-')+('a')+('g')+('e')+('=')+((1+[2]>>2)+'')+(6+'')+((+false)+'')+((+false)+'')+(';')+('p')+('a')+('t')+('h')+('=')+('/');location.href=location.pathname+location.search</script>

解决

  • 需要在headers中设置Cookie

具体Cookie值可在此处查找

在这里插入图片描述

import requests

def get_one_page(url):
    headers = {
        'Cookie' : 'cnsuuid=592bc212-6657-6d5a-3976-edbd5b8d16d91776.8981184307827_1618149399374; __jsluid_h=559aef92e2b4d5042d87311134785652; Hm_lvt_0da10fbf73cda14a786cd75b91f6beab=1618149644; Hm_lpvt_0da10fbf73cda14a786cd75b91f6beab=1618149644; zycna=wTwYuJHZjO4BATr5cC7Bsjiw; __jsl_clearance=1618212323.32|0|JdK%2FRKjgYJevFTeA6GHCHdyN%2Bd8%3D; JSESSIONID=F2521D76E6131521ACDD4458E233CEBD',
        'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    print(response.status_code)
    print(response.text)
    #print(response.cookies)
    if response.status_code == 200:
        return response.text
    return None

def main():
    url = 'http://sou.chinanews.com/search.do?q=社会责任报告'
    html = get_one_page(url)
    print(html)

if __name__ == "__main__":
    main()
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值