一、网络连接
'''输出http://pythonscraping.com/pages/page1.html这个网页的全部HTML代码'''
from urllib.request import urlopen
html = urlopen("http://pythonscraping.com/pages/page1.html")
print(html.read())
二、BeautifulSoup简介
'''从网页中提取<h1>标签'''
from urllib.request import openurl
from bs4 import BeautifulSoup
html = urlopen("http://pythonscraping.com/pages/page1.html")
bsObj = Beautiful(html.read()) # 创建BeautifulSoup实例对象
print(bsObj.h1) # bsObj.html.body.h1 or bsObj.body.h1 or bsObj.html.h1
可靠的网络连接
urlopen("http://pythonscraping.com/pages/page1.html")
这行代码主要可能会发生两种异常:
- 网页在服务器上不存在(或者获取页面的时候出现错误)(HTTPError异常)
- 服务器不存在(返回None对象)
即使网页已经从服务器成功获取,在使用BeautifulSoup解析网页时,如果你想要调用的标签不存在,BeautifulSoup就会返回None对象,不过,如果再调用这个None对象下面的子标签,就会发生AttributeError错误
from urllib.request import urlopen
from urllib.error import HTTPError, URLError
from bs4 import BeautifulSoup
def getTitle(url):
try:
html = urlopen(url)
except (HTTPError, URLError) as e: # 网页上的服务器不存在,或者获取页面的时候出现错误
return None
try:
bsObj = BeautifulSoup(html.read())
title = bsObj.body.h1
except AttributeError as e: # 如果服务器不存在,html就是一个None对象,html.read()就会抛出AttributeError
return None
return title
title = getTitle("http://pythonscraping.com/pages/page1.html")
if title == None:
print("Title could not be found")
else:
print(title)