📅  最后修改于: 2023-12-03 15:35:32.082000             🧑  作者: Mango
Python的urllib模块提供了一些处理URL的标准Python模块,其中包括:
urllib.request
模块定义了一个用于打开URL的抽象类OpenerDirector
,并且提供了一个默认实现urlopen()
函数。
以下是使用urllib.request
打开URL的示例:
import urllib.request
response = urllib.request.urlopen('https://www.baidu.com')
print(response.read())
通过以上代码,我们可以获取百度首页的HTML代码并打印出来。
urllib.error
模块定义了由urllib.request
引发的异常。以下是使用urllib.error
处理异常的示例:
import urllib.request
import urllib.error
try:
urllib.request.urlopen('http://www.baidu.com/some_page_that_does_not_exist')
except urllib.error.HTTPError as e:
print('HTTP Error:', e.code, e.reason)
except urllib.error.URLError as e:
print('URL Error:', e.reason)
通过以上代码,我们可以处理HTTP错误和URL错误两种异常。
urllib.parse
模块定义了用于解析URL的函数和类,包括:
以下是使用urllib.parse
解析URL的示例:
from urllib.parse import urlparse
url = 'http://www.baidu.com/index.html;user?id=5#comment'
result = urlparse(url)
print(result)
通过以上代码,我们可以解析URL的各个组成部分。
urllib.robotparser
模块用于解析robots.txt文件,并且可以判断一个页面是否可以被爬取。
以下是使用urllib.robotparser
解析robots.txt文件的示例:
from urllib.robotparser import RobotFileParser
rp = RobotFileParser()
rp.set_url('http://www.jianshu.com/robots.txt')
rp.read()
can_fetch = rp.can_fetch('*', 'http://www.jianshu.com/p/b67554025d7d')
print(can_fetch)
通过以上代码,我们可以判断一个页面是否可以被爬取。