📜  Python Urllib模块

📅  最后修改于: 2020-04-10 01:01:45             🧑  作者: Mango

Urllib模块是Python的URL处理模块。它用于获取URL(统一资源定位符)。它使用urlopen函数,并能够使用各种不同的协议来获取URL。
Urllib是一个软件包,它收集了几个用于处理URL的模块,例如:

  • urllib.request用于打开和阅读。
  • urllib.parse用于解析URL
  • urllib.error引发异常
  • urllib.robotparser用于解析robot.txt文件

如果您的环境中不存在urllib,请执行以下代码进行安装。

pip3 install urllib

其中pip3代表Python3,让我们详细了解这些。

urllib.request
该模块有助于定义函数和类以打开URL(主要是HTTP)。打开此类URL的最简单方法之一是:

urllib.request.urlopen(url)

我们可以在示例中看到:

import urllib.request
geeksforgeeks
print(request_url.read())

输出

The source code of the URL i.e. geeksforgeeks.


urllib.parse
该模块有助于定义函数来操纵URL及其组成部分,以构建或破坏它们。通常,它着重于将URL分成小部分;或将不同的URL组件合并为URL字符串。
我们可以从下面的代码中看到这一点:

from urllib.parse import * parse_url = urlparse('https://www.geeksforgeeks.org / Python-langtons-ant/')
print(parse_url)
print("\n")
unparse_url = urlunparse(parse_url)
print(unparse_url)

输出

ParseResult(scheme ='https',netloc ='www.geeksforgeeks.org',path ='/ Python-langtons-ant /',params =“,query ='',fragment ="))
https://www.geeksforgeeks.org/Python-langtons-ant/

注意:URL的不同组成部分被分开并再次结合在一起。尝试使用其他网址以更好地理解。
urllib.parse的其他不同函数是:

函数 描述
urllib.parse.urlparse 分隔URL的不同组成部分
urllib.parse.urlunparse 连接URL的不同组成部分
urllib.parse.urlsplit 它与urlparse()类似,但不拆分参数
urllib.parse.urlunsplit 合并urlsplit()返回的元组元素以形成URL
urllib.parse.urldeflag 如果URL包含片段,则它将返回一个URL,以删除该片段。

urllib.error
此模块定义urllib.request引发的异常类。每当获取URL时发生错误时,此模块都会帮助引发异常。以下是引发的异常:

  • URLError :引发URL错误或由于连接而获取URL时出错的错误,并具有“ reason”属性,该属性可告知用户错误原因。
  • HTTPError :对于异常的HTTP错误(例如,身份验证请求错误)引发。它是子类或URLError。典型错误包括“ 404″(找不到页面),“ 403″(禁止请求)和“ 401″(需要认证)。

我们可以在以下示例中看到这一点:

# URL错误
import urllib.request
import urllib.parse
# 尝试读取URL但没有互联网连接
try:
    x = urllib.request.urlopen('https://www.google.com')
    print(x.read())
# 捕获生成的异常
except Exception as e :
    print(str(e))

输出

URL Error: urlopen error [Errno 11001] getaddrinfo failed

 

# HTTP错误
import urllib.request
import urllib.parse
# 试图读取URL
try:
    x = urllib.request.urlopen('https://www.google.com / search?q = test')
    print(x.read())
# 捕获生成的异常
except Exception as e :
    print(str(e))

输出

HTTP Error 403: Forbidden

urllib.robotparser
该模块包含单个类RobotFileParser。此类回答有关特定用户是否可以获取发布robot.txt文件的URL的问题。Robots.txt是网站管理员创建的文本文件,用于指示网络机器人或者爬虫如何在其网站上抓取网页。robot.txt文件告诉网络抓取器不应该访问服务器的哪些部分。
例如 :

# 导入机器人解析器类
import urllib.robotparser as rb
bot = rb.RobotFileParser()
# 检查网站的robot.txt文件所在的位置
x = bot.set_url('https://www.geeksforgeeks.org / robot.txt')
print(x)
# 读取文件
y = bot.read()
print(y)
# 我们可以检索主站点
z = bot.can_fetch('*', 'https://www.geeksforgeeks.org/')
print(z)
# 但无法抓取不允许的网址 w = bot.can_fetch('*', 'https://www.geeksforgeeks.org / wp-admin/')
print(w)

输出:

None
None
True
False