加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 教程 > 正文

Python学习:urllib 分析

发布时间:2021-05-29 19:06:29 所属栏目:教程 来源:互联网
导读:副标题#e# 接下来我们会分开讨论除了 urllib.error 以外的几部分。官方文档实际推荐你尝试第三方库, requests,一个高级的 HTTP 客户端接口。然而我依然认为知道如何不依赖第三方库打开 URL 并与之进行交互是很有用的,而且这也可以帮助你理解为什么 reque
副标题[/!--empirenews.page--]

接下来我们会分开讨论除了 urllib.error 以外的几部分。官方文档实际推荐你尝试第三方库, requests,一个高级的 HTTP 客户端接口。然而我依然认为知道如何不依赖第三方库打开 URL 并与之进行交互是很有用的,而且这也可以帮助你理解为什么 requests 包是如此的流行。

urllib.request

urllib.request 模块期初是用来打开和获取 URL 的。让我们看看你可以用函数 urlopen 可以做的事:

>>> import urllib.request 

>>> url = urllib.request.urlopen('https://www.google.com/') 

>>> url.geturl() 

'https://www.google.com/' 

>>> url.info() 

<http.client.HTTPMessage object at 0x7fddc2de04e0> 

>>> header = url.info() 

>>> header.as_string() 

('Date: Fri, 24 Jun 2016 18:21:19 GMTn' 

 'Expires: -1n' 

 'Cache-Control: private, max-age=0n' 

 'Content-Type: text/html; charset=ISO-8859-1n' 

 'P3P: CP="This is not a P3P policy! See ' 

 'https://www.google.com/support/accounts/answer/151657?hl=en for more info."n' 

 'Server: gwsn' 

 'X-XSS-Protection: 1; mode=blockn' 

 'X-Frame-Options: SAMEORIGINn' 

 'Set-Cookie: ' 

 'NID=80=tYjmy0JY6flsSVj7DPSSZNOuqdvqKfKHDcHsPIGu3xFv41LvH_Jg6LrUsDgkPrtM2hmZ3j9V76pS4K_cBg7pdwueMQfr0DFzw33SwpGex5qzLkXUvUVPfe9g699Qz4cx9ipcbU3HKwrRYA; ' 

 'expires=Sat, 24-Dec-2016 18:21:19 GMT; path=/; domain=.google.com; HttpOnlyn' 

 'Alternate-Protocol: 443:quicn' 

 'Alt-Svc: quic=":443"; ma=2592000; v="34,33,32,31,30,29,28,27,26,25"n' 

 'Accept-Ranges: nonen' 

 'Vary: Accept-Encodingn' 

 'Connection: closen' 

 'n') 

>>> url.getcode() 

200 

在这里我们包含了需要的模块,然后告诉它打开 Google 的 URL。现在我们就有了一个可以交互的 HTTPResponse 对象。我们要做的***件事是调用方法 geturl ,它会返回根据 URL 获取的资源。这可以让我们发现 URL 是否进行了重定向。

接下来调用 info ,它会返回网页的元数据,比如请求头信息。因此,我们可以将结果赋给我们的 headers 变量,然后调用它的方法 as_string 。就可以打印出我们从 Google 收到的头信息。你也可以通过 getcode 得到网页的 HTTP 响应码,当前情况下就是 200,意思是正常工作。

如果你想看看网页的 HTML 代码,你可以调用变量 url 的方法 read。我不准备再现这个过程,因为输出结果太长了。

请注意 request 对象默认发起 GET 请求,除非你指定了它的 data 参数。如果你给它传递了 data 参数,这样 request 对象将会变成 POST 请求。

下载文件

urllib 一个典型的应用场景是下载文件。让我们看看几种可以完成这个任务的方法:

>>> import urllib.request 

>>> url = '' 

>>> response = urllib.request.urlopen(url) 

>>> data = response.read() 

>>> with open('/home/mike/Desktop/test.zip', 'wb') as fobj: 

...     fobj.write(data) 

... 

这个例子中我们打开一个保存在我的博客上的 zip 压缩文件的 URL。然后我们读出数据并将数据写到磁盘。一个替代此操作的方案是使用 urlretrieve :

>>> import urllib.request 

>>> url = '' 

>>> tmp_file, header = urllib.request.urlretrieve(url) 

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读