两种网络异常:
1.网页在服务器上不存在(或者获取页面的时候出现错误)
2.服务器不存在
1 from urllib.request import urlopen 2 from urllib.error import HTTPError 3 from bs4 import BeautifulSoup 4 5 def getTitle(url): 6 try: 7 html=urlopen(url) 8 except HTTPError as e: 9 return None 10 11 try: 12 s=BeautifulSoup(html.read(), 'lxml') 13 title=bs.body.h1 14 except AttributeError as e: 15 return None 16 return title 17 title=getTitle('网址') 18 19 if title==None: 20 print('Title could not be found') 21 else: 22 print(title)
1.getTitle函数 可返回网页的标题,如果获取网页的时候遇到问题就返回一个None对象;
2.不仅检查HTTPError,还检查了由于URL输入错误引起的URLError,然后把两行BeautifulSoup代码封装在一个try语句里,当任意一行有问题,都会抛出AttributeError
(如果服务器不存在,html就是一个None对象。html.read()就会抛出AttributeError)
(其实,在try语句中放任意多行代码,或者调用一个在任意位置 都可以抛出AttributeError的函数)
注:在写爬虫时,思考代码的总体格局。
载抄自:《Python网络爬虫》