📜  urllib - Python (1)

📅  最后修改于: 2023-12-03 15:35:32.082000             🧑  作者: Mango

Python的urllib模块

Python的urllib模块提供了一些处理URL的标准Python模块,其中包括:

  • urllib.request - 用于打开和读取URL
  • urllib.error - 包含由urllib.request引发的异常
  • urllib.parse - 用于解析URL
  • urllib.robotparser - 用于解析robots.txt文件
urllib.request

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.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

urllib.parse模块定义了用于解析URL的函数和类,包括:

  • urlparse() - 解析URL并返回其组成部分
  • urlunparse() - 组装URL对象为URL字符串
  • urljoin() - 连接URL
  • urlencode() - 把参数从映射或序列转换为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

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)

通过以上代码,我们可以判断一个页面是否可以被爬取。