python爬虫HTTPError 和 AttributeError错误及改进措施

在Python爬虫过程中,遇到HTTPError通常是网页不存在或服务器问题,而AttributeError可能因网页内容不符预期导致。为确保爬取稳定性,应添加异常处理机制。针对HTTPError,可通过捕获异常来处理;对于AttributeError,需在访问BeautifulSoup对象的标签前检查其是否存在,以防止None对象引发的错误。
摘要由CSDN通过智能技术生成

爬虫的时候很容易发生错误,为了避免因为某几个网页错误影响所有网页的爬取,在代码中加入错误检测机制是很有必要的

HTTPError

html = urlopen("http://www.pythonscraping.com/pages/page1.html")

运行以上代码主要会发生两种异常:

  • 网页在服务器上不存在(或者获取页面的时候出现错误)
  • 服务器不存在
    这两种错误,urlopen都会抛出HTTPError异常。可以用以下方式处理:
try:     
	html = urlopen("http://www.pythonscraping.com/pages/page1.html") 
except HTTPError as e:  
	print(e)
   # 返回空值,中断程序,或者执行另一个方案
else:
     # 程序继续。注意:如果你已经在上面异常捕捉那一段代码里返回或中断
     # 那么就不需要使用else语句了,这段代码也不会执行

AttributeError

即使网页已经从服务器成功获取,如果网页上的内容并非完全是我们期望的那样, 仍然可能会出现异常。
每当你调用 BeautifulSoup 对象里的一个标签时,增加一个检查条件保证标签确实存在是很聪明的做法。如果你想要调用的标签不存,BeautifulSoup 就会返回 None 对象。不过,如果再调用这个 None 对象下面的子标签,就会发生 AttributeError 错误。
假设返回对象bsObj中没有h1这个标签ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ugly girl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值