优草派  >   Python

Python爬虫如何跳过异常继续执行?Python爬虫跳过异常处理方法

翟嘉慧            来源:优草派

我们学习Python爬虫的时候就说过,它可以去网页中获取一些我们需要的数据,如何进行数据的分析,对数据进一步处理,最近有很多的小伙伴在说使用爬虫的时候遇到的异常的情况,但是不知道如何解决,下面一起来看看这篇文章吧。

Python爬虫如何跳过异常继续执行?Python爬虫跳过异常处理方法

一、异常报错

最近有一些小伙伴在使用爬虫爬图片的时候,会遇到下面的报错的情况,如下:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='www.xxx.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0334D290>: Failed to establish a new connection: [WinError 10060]

又或者是下面这种错误,如下:

urllib.error.HTTPError: HTTP Error 403: Forbidden

二、解决方法:

当我们在爬取的时候如果出现以上两种情况之一,可能是因为网络连接的不稳定造成的,还有一种情况是某网站设置的防爬的操作,以为是不法访问那么会强制的关闭连接,从而操作我们的爬虫在运行的时候失败,此时我们就要利用异常处理的操作让爬虫继续运行,操作方法如下:

import requests
import time
import json
from td import td
url = 'https://www.xxxx.com' 这是一个需要爬取的网页地址。
for item in td(items): 这里的items是网页中需要爬取的框架,td设置的是一个简单的进度条,不想看进度条可以直接for item in items:
From_data = {'text': item} # 传入requests的数据
while True: #让请求一直继续,直到成功后break
try:
response = requests.post(url, data=From_data) # 如果这个请求失败,那么并不会运行break,将运行except中的代码
break # 能运行到这一步说明请求成功,可以跳出循环了
except:
time.sleep(1) # 暂停1秒,之后回到while True继续请求
print('sleep')
content = json.loads(response.text)# 跳出循环后对得到的数据处理

在这个程序中,就是使用while True去处理出现异常的情况,当出现异常的时候程序不继续往下执行,而是构成一个请求继续访问,知道成功为止。同时在报错的时候不会将一个程序中断,睡眠时间可以根据需求设置,如果设置为1秒的话,在运行速度上会快一些。

到此这篇关于Python爬虫如何跳过异常继续执行?Python爬虫跳过异常处理方法的文章就非常到这里了,希望文章中的内容可以对大家的学习带来一定的帮助,同时让大家掌握到更多Python爬虫的知识。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行