python3.x中的urllib模块
最新版的python3.3.0已经发布了。相较于python3.0,3.2的改动并不大。但网上的大量的教程等大都以2.x版本为基础。这为想要从python3.0学起的菜鸟带来了不少的困难。
作为一只菜鸟,最近想学习一下python中urllib模块的使用方法。从网上找的最简单的实例:把google 首页的html抓取下来并显示在控制台上 代码:import urllibprint urllib.urlopen('http://www.google.com').read()
首先,使用过python3.0的朋友都知道,print已经变成含树了,需要括号。但这不是主要问题。问题是控制台显示错误,说urllib模块中没有urlopen方法。
奇怪了,网上的教程能错了?又尝试help(urllib),发现什么方法都没有,只提供了package contents,里面有5个名字。 作为一名新手,第一感觉是十分慌乱,是不是IDLE坏了,重装试试。。。当然所有尝试都以失败告终。 最后,我尝试着找找python3.3.0的change log。里面并没有找到urllib的修改记录。然而这一修改记录却在python3.0的change log中。 原文是这样写的:a new
urllib
package was created. It consists of code fromurllib
,urllib2
,urlparse
, androbotparser
. The old modules have all been removed. The new package has five submodules:urllib.parse
,urllib.request
,urllib.response
,urllib.error
, andurllib.robotparser
. Theurllib.request.urlopen()
function uses the url opener fromurllib2
. (Note that the unittests have not been renamed for the beta, but they will be renamed in the future.)
原来,3.0版本中已经将urllib2、urlparse、和robotparser并入了urllib中,并且修改urllib模块,其中包含5个子模块,即是help()中看到的那五个名字。
为了今后使用方便,在此将每个包中包含的方法列举如下:
urllib.error: ContentTooShortError; HTTPError; URLErrorurllib.parse: parse_qs; parse_qsl; quote; quote_from_bytes; quote_plus; unquote
unquote_plus; unquote_to_bytes; urldefrag; urlencode; urljoin; urlparse; urlsplit; urlunparse; urlunsplit
urllib.request: AbstractBasicAuthHandler; AbstractDigestAuthHandler; BaseHandler;
CatheFTPHandler; FTPHandler; FancyURLopener; FileHandler; HTTPBasicAuthHandler; HTTPCookieProcessor; HTTPDefaultErrorHandler; HTTPDigestAuthHandler; HTTPErrorProcessorl; HTTPHandler; HTTPPasswordMgr; HTTPPasswordMgrWithDefaultRealm; HTTPRedirectHandler; HTTPSHandler;OpenerDirector;ProxyBasicAuthHandler ProxyDigestAuthHandler; ProxyHandler; Request; URLopener; UnknowHandler; build_opener; getproxies; install_opener; pathname2url; url2pathname; urlcleanup; urlopen; urlretrieve;
urllib.response: addbase; addclosehook; addinfo; addinfourl;
urllib.robotparser: RobotFileParser
当然,python3.0的改动十分巨大,有需要可以参阅
如果想要学习python的话,还是建议从3.0起步。因为毕竟时代是发展的,追随最新的东西至少不是错的。