python 中的 urllib 模块使得我们可以通过指定的 url 来访问网络上的文件,以及可以进一步的提取信息等等操作。
1,打开 URL 指定的远程页面
* urlopen( url[, data[, proxies]])
打开一个 file-like(文件类)对象,该 “文件” 是由参数 url 指定的 “文件”,这里表明既可以指定一个我们熟知的 URL (如:
www.sohu.com
等 url 路径),也可以指定为本地的文件路径,但是该(文件类)对象只是支持如下的方法:read(), readline(), readlines(), fileno(), close(), info() 以及 geturl()。
# 注意这里指定了为 "http",如果只是打开 "
www.sohu.com
",则会报错
>>> sohu_index_page = urlopen("
http://www.sohu.com
")
- info() returns an instance of the class mimetools.Message containing meta-information associated with the URL.
+ When the method is HTTP, these headers are those returned by the server at the head of the retrieved HTML page (including Content-Length and Content-Type).
+ When the method is FTP, a Content-Length header will be present if (as is now usual) the server passed back a file length in response to the FTP retrieval request.
+ When the method is local-file, returned headers will include a Date representing the file's last-modified time, a Content-Length giving file size, and a Content-Type containing a guess at the file's type.
# 可见 method 为 HTTP,并且返回的 instance 为 httplib.HTTPMessage 类型,
# 可以获得更多的信息
>>> sohu_index_page.info()
- geturl() 打开该页面所指向的实际的 URL.
>>> sohu_index_page.geturl()
'http://www.sohu.com'
- read, readlines 读取 “文件类” 对象的内容
# 测试的时候建议找个简单的页面:)
# 当然你也可以使用下面介绍的 urlretrieve () 方法来 copy 到本地文件中进行查看
>>> print sohu_index_page.read()
2,存储到本地文件中
* urlretrieve( url[, filename[, reporthook[, data]]])
将由 url 指定的 “远程” 文件类对象 copy 到由 filename 指定的文件中。如果你所指定的 url 是本地文件,或者已经有了 copy,则不进行 copy。另外,该方法返回一个 tuple (filename, headers),其中 filename 是 copy 后的本地文件名称,headers 是由 info() 后的头部信息。
>>> from urllib import urlretrieve
>>> filename, http_msg = urlretrieve("
http://www.sohu.com
", "sohu_index_page.txt")
>>> print filename
sohu_index_page.txt
>>> print http_msg
Date: Fri, 11 May 2007 06:56:27 GMT
Server: Apache/1.3.33 (Unix) mod_gzip/1.3.19.1a
Vary: Accept-Encoding,X-Up-Calling-Line-id,X-Source-ID,X-Up-Bearer-Type,x-huawei-nasip,x-wap-profile
Cache-Control: max-age=70
Expires: Fri, 11 May 2007 06:57:37 GMT
Last-Modified: Fri, 11 May 2007 06:39:21 GMT
ETag: "ae073e-38e4d-46440f99"
Accept-Ranges: bytes
Content-Length: 233037
Content-Type: text/html
Age: 60
X-Cache: HIT from 028070024.sohu.com
Connection: close