用python写爬虫程序的时候经常使用的库肯定是urllib,除此之外,还有urllib2和cookielib等,但是由于python版本的更新,在一些库和方法的使用上python3并不能向下兼容。所以在写爬虫程序时并不能按照python2的引用方法。现将urllib等方法的引用方法归纳如下(以python3.4为例,是否会适用python3.2等版本不可知):
首先,python3.4中,而是将urllib2、urlparse、robotparser并入了urllib模块,并且修改了urllib模块,其中包含了5个子模块,每个子模块中的常用方法如下:
urllib.error: ContentTooShortError;URLError;HTTPError
urllib.parse:urlparse;_splitparams;urlsplit;urlunparse;urlunsplit;urljoin;urldefrag;
unquote_to_bytes;unquote;parse_qs;parse_qsl;unquote_plus;quote;
quote_plus;quote_from_bytes;urlencode;to_bytes;unwrap;splittype;splithost;splituser;splitpasswd;splitport等;
urllib.request: urlopen; install_opener; urlretrieve; urlcleanup; request_host; build_opener; _parse_proxy; parse_keqv_list; parse_http_list; _safe_gethostbyname; ftperrors; noheaders; getproxies_environment; proxy_bypass_environment; _proxy_bypass_macosx_sysconf; Request
urllib.response: addbase; addclosehook; addinfo;addinfourl;
urllib.robotparser: RobotFileParser
以上方法并没有列举完全,具体的每个子块的所有类和方法可以在python安装包里的Lib/urllib下查询(如果不是python3.4.3版本的python版本,可以到这个目录下面查询相应的方法。)
另外,python2中的cookielib,在python3.4中重命名为http.cookiejar. 引用时直接import http.cookiejar 即可。
最后,由于python3严格区分bytes和str类型,并且这两种类型不能以任意隐式方式使用,但是urllib中的有些方法对于str和bytes有严格的规定,比如下面这段代码: