urllib 库

获取 Web 端文本数据

首先我们来运行如下的Python3代码

from urllib.request import urlopen
html = urlopen('https://www.python.org').read().decode()
print(type(html))
print(html[:15])

上面这段代码主要功能是获取Python官网的主页HTML源代码,然后打印出其中的一部分。
就其功能来看,代码量已经是非常少了,足见Python简单粗暴的特性。

下面我们来了解了解这段代码。
首先我们用from urllib.request import urlopen从urllib库的request中引入urlopen方法;
然后我们用urlopen从https://www.python.org的获取一段Web资源,
用read从中读取出来,再经过decode解码并赋值给变量html;
最后我们输出html的部分内容。

其中decode在缺省情况下会将数据以utf-8方式解码,所以看一下HTML页面的也是有必要的。

目前为止我们已经完成了Python数据挖掘中具有Hello World意义的代码,我们可以用这个方法去获取我们想要的文本类型的数据,
例如:html、txt、xml、css、js……

获取 Web 端非文本数据

下面我们来尝试使用urllib库下载一张图片,代码如下:

from urllib.request import urlopen
img = urlopen('https://www.python.org/static/img/python-logo.png').read()
with open('python-logo.png', 'wb') as f:
    f.write(img)
python-logo.png

这段代码大多数地方我们都不必细说,不过其中有两个地方值得关注。
首先是类似图片、视频、编译后的程序等二进制文件,我们并不回对其使用decode解码;
其次是尽量在with as中打开文件资源。

做得好!现在我们已经可以初步的从Web端获取数据了。

构建中文 URL

我们也许会遇到一些由中文构成的URL,这种URL是不可以被直接放入urlopen当中的,我们需要对其进行转码操作。

我们主要用到quote方法,用法如下:

from urllib.request import urlopen, quote

url_head = 'https://zh.moegirl.org/'
url_word = 'Python娘'
url = url_head + quote(url_word)
html = urlopen(url).read().decode()
print(html[:50])

配套视频教程《Python3 数据处理入门》已在网易云课堂发布,大家快来捧场吧´ ▽ ` )ノ

地址: http://study.163.com/course/introduction/1003206054.htm#/courseDetail

urllib 库_第1张图片
可扫码前往

你可能感兴趣的:(urllib 库)