python - 即使通过代理的连接失败,如何重试当前循环

标签 python python-3.x exception beautifulsoup

所以我有一堆我想废弃的链接,但经常发生的是,在循环中间(当尝试连接到随机链接时),突然通过代理的连接失败,循环是停止并且我的程序关闭。

这是代码:

import requests
from bs4 import BeautifulSoup as soup


#Setting Proxy
proxies = {"http": "http://232.454.676.898:8888"}

#List Of Links
link_strings = ['http://foo1.com','http://foo2.com','http://foo3.com', ... ,'http://foo999.com']

for link in link_strings:
    url = link

    uClient = requests.get(url, proxies=proxies)
    page_html = uClient.text
    uClient.close()

    page_soup = soup(page_html, "html.parser")

    #Do some scrapping

那么,如何处理这个问题?
我应该尝试通过代理连接直到成功吗?但如何做到这一点呢?
或者我应该再次运行当前循环?但如何做到这一点呢?

最佳答案

try catch requests.get() 抛出的异常并循环直到连接正常:

exception = True
while (exception):
    exception = False
    try:
        uClient = requests.get(url, proxies=proxies)
    except requests.exceptions.RequestException as e:
        exception = True

请注意,如果连接永远无法工作,这可能会造成无限循环!相反,您可以在连接失败时继续:

try:
    uClient = requests.get(url, proxies=proxies)
except requests.exceptions.RequestException as e:
    continue

关于python - 即使通过代理的连接失败,如何重试当前循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48720888/

相关文章:

python - 这个 Python3 字符串格式表达式中美元符号的用途是什么?

c++ - 处理不应崩溃的关键应用程序中的异常

python - 如何让用户登录Mezzanine教程网站?

python - 如何使用类装饰器计算实例方法调用

python - 为什么 'itsdangerous' 模块返回签名文本?

python-3.x - 在Python中将特定的中文标点符号替换为相应的英文标点符号

c# - SqlFileStream 异常 "An invalid parameter was passed to the function"

c# - .NET 库的异常处理模式 - 处理、无人值守还是重新抛出?

python - Django bulk_create 函数示例

python - 关于这个 python 脚本的问题!