使用Python的urllib.request模块访问互联网


介绍

我们使用Python中的**urllib.request**模块来访问和打开URL,这些URL通常使用HTTP协议。

该接口对于初学者来说也非常简单易用;它使用**urlopen**函数,可以使用各种不同的协议获取各种URL。

当我们开始使用它的各种功能时,您将更好地理解我们正在处理的内容。那么,让我们开始吧。

开始

**urllib**库与Python一起打包提供。因此,您无需单独安装它,但如果您想将其添加到您的环境中并且您还没有它,您可以使用pip包管理器安装它。

启动您的终端并使用以下代码:

pip install urllib

安装完成后,您可以导入正确的模块并开始编写您的脚本。

查看urllib.request

我们最常使用urllib.request来打开和读取数据或页面的源代码。如果您尝试从API检索数据,这将特别有用。例如:

import urllib.request
request_url = urllib.request.urlopen('https://official−joke−api.appspot.com/random_ten')

以上代码行将打开笑话API并读取其数据。

假设您想打印其内容,您可以使用:

print(request_url.read())

**注意** - 这将以字节格式打印出值。如果您想要纯文本,请使用decode函数。

print(request_url.read().decode())

您甚至可以保存来自API的数据,然后稍后使用正则表达式解析它以仅获取必要的数据。

示例

import urllib.request
data = urllib.request.urlopen('https://official−joke−api.appspot.com/random_ten')
data = data.read().decode()
print(data)
file = open("content.txt", "w+")
file.write(data)
file.close()

**注意** -您可以访问使用各种协议的URL,包括FTP、HTTPS等。**urlopen**函数对所有不同的协议的工作方式完全相同。

向URL发送数据

如果您正在使用公共网关接口,您可能希望向URL发送数据。这与HTTP发送POST请求的方式类似。

您可以使用urllib.request和urllib.parse模块来实现此目的。

让我们首先导入模块。

示例

import urllib.parse
import urllib.request
url = 'http://www.google.com/cgi-bin/register.cgi'
values = {'name' : 'S Vijay Balaji', language' : 'Python' }
data = urllib.parse.urlencode(values)
data = data.encode('ascii')
req = urllib.request.Request(url, data)
with urllib.request.urlopen(req) as response:
   the_page = response.read()

这应该打印出从提供的URL获取的源代码。

结论

urllib.request模块非常有用,因为我们可以检索互联网资源并从中获取数据。

在从API解析数据或读取网页源代码以抓取其内容时,它非常方便。

使用urllib.request从各种API提取数据的项目 - https://github.com/SVijayB/Steam_WebScraper

urllib.request模块还有许多其他函数。如果您好奇并想了解更多信息,您可以查看其官方文档 - https://docs.pythonlang.cn/3/library/urllib.request.html

更新于:2021年2月11日

451 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.