网络是非常复杂的。网页数据格式不友好,网站服务器宕机,目标数据的标签找不到,都是很麻烦的事情。网络数据采集最痛苦的遭遇之一,就是爬虫运行的时候你洗洗睡了,梦想着明天一早数据就都会采集好放在数据库里,结果第二天醒来,你看到的却是一个因某种数据格式异常导致运行错误的爬虫。在前一天当你不再盯着屏幕去睡觉时,没过一会爬虫就不行了。下面让我针对这种情况,如何进行这种异常的处理方式:
让我们看看爬虫import语句后面的第一行代码,如何处理那里可能出现的异常:
html=urlopen("http://www.pythonscraping.com/pages/page1.html")
这行代码主要可能会发生两种异常:
(1)网页在服务器上不存在(或者获取页面的时候出现错误)
(2)服务器不存在
第一种异常情况,程序返回HTTP错误。HTTP错误可能是“404 Page Not Found”"500 Internal Server Error"等。所有类似情形,urlopen函数都会抛出“Http Error”异常。我们可以用下面的方式处理这种异常:
try:
html=urlopen("http://www.pythonscrapinig.com/pages/page1.html")
except HTTPError as e:
print(e)
#返回空值,中断程序,或者执行另一个方案