两种网络异常:
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网络爬虫》