SSLEFror: HTTPSComectionPool(host= w.imdb.com‘, port.-443)

问题描述

今天在做作业的时候,有同学反映完全一样的代码,在其他电脑上可以完美运行,再另一台电脑上却出现以下错误

SSLEFror: HTTPSComectionPool(host= w.imdb.com', port.-443): Max retries exceeded with url: /title/tt0110912/reviews?ratingFilter=l(Cased by SSLError(SSLError("bad handshake: SysCallError(10054,'WSAECONNRESET')")

作业代码如下

import requests
import re
def download_imdb_comments():
    url = "https://www.imdb.com/title/tt0110912/reviews"
    para = {"ratingFilter":"1"}
    r= requests.get(url,params=para)
    html = r.text
    pattern_comment = r'<div class="text show-more__control">(.*)</div>'
    comments = re.findall(pattern=pattern_comment,string=html)
    return comments

comments = download_imdb_comments()
print(comments)
    

解决办法

  • 此类错误通常原因是因为SSL整数问题,所以首先设置不验证证书

    request.get(xxx, xxx, verify=False)
    

    经测试后反映仍然是同一个报错信息。

  • 猜测可能是请求头未设置,被网站识别为爬虫,于是设置请求头

    headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}
    requesr.get(XXX, XXX, headers=headers )
    

    经测试后反映仍然是同一个报错信息。

  • 猜测可能是IP被封的原因,使用代理IP地址+端口后发起请求

    proxies = {'https': "IP地址:端口号"}
    r= requests.get(url,params=para, proxies=proxies)
    

    获取免费爬虫IP地址教程为:

    经测试后反映仍然是同一个报错信息。

  • 猜测是连接数量太多,于是设置不保持连接

    s = requests.session()
    s.keep_alive = False
    

    经测试后反映仍然是同一个报错信息。

  • 猜测是request库安装错误
    但同学反映之前能正常使用reques.get(),只是在这段代码出问题,所以问题排除

  • 猜测是,好吧,实在猜不到了,就让她手动打开这个URL,查看能否访问
    该同学反映不能打开这个网页,但其他人能正常打开,我似乎发现了问题所在

  • 猜测是该电脑当前使用的IP地址被网站封禁
    让其打开手机热点,电脑连接后(IP地址已经改变)再运行看是否发生错误。
    经测试后反映仍然是同一个报错信息。

  • 猜测是运营商的IP地址被封了
    同学使用校园卡,手机、电脑均是移动网,让她换一个电信的手机开热点试试。
    经测试后反映问题已经解决

总结

1、第一次遇到这种BUG,可能是该网站将成都地区的移动IP均封禁了,换其他运营商IP就可以解决这个问题。
2、但我还是有疑问,如果真是第一点所说的话,那么在我们之前使用高匿代理IP发起请求的时候,问题就应该得以解决,那个IP地址是我测试没问题后,才发给她的,但是她却运行同样的错误。不过我发了很多个IP地址给她试,她只试了其中一个,也许就那一瞬间,那个代理IP就失效了吧(不过失效也应该是timeout错误,而不是SSLError错误)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值