Python3.x urllib模块详解:爬虫基础与实例

1 下载量 8 浏览量 更新于2024-09-07 收藏 104KB PDF 举报
"Python爬虫开发中的urllib模块详解及实例" 在Python的网络编程领域,urllib模块扮演着至关重要的角色,特别是在爬虫开发中。它是一个标准库,无需额外安装,提供了丰富的功能来处理HTTP请求、URL解析、代理设置、cookie管理以及robots.txt解析。在Python 2.x和3.x版本之间,urllib模块的组织结构有所变化,但其核心功能保持一致。 在Python 2.x中,urllib模块分为几个子模块,如urllib2、urllib、urlparse等。而在Python 3.x中,这些子模块被合并到一个大的urllib模块内,包括urllib.request、urllib.error、urllib.parse等。这种改变使得代码更加清晰,减少了模块间的依赖。 urllib.request模块 urllib.request是urllib的核心部分,主要用于发送HTTP、HTTPS等网络请求。其中最重要的函数是`urlopen()`,它用于打开一个URL并返回一个文件对象。`urlopen()`有多个参数,比如: ```python r = urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) ``` - `url`:要访问的URL字符串。 - `data`:如果要发送POST请求,可以将数据作为字节序列或字符串传递。 - `timeout`:设置超时时间。 - `cafile`、`capath`、`cadefault`和`context`:用于SSL/TLS证书验证。 例如,简单的GET请求: ```python response = urllib.request.urlopen('http://example.com') ``` POST请求: ```python data = {'key1': 'value1', 'key2': 'value2'} data = urllib.parse.urlencode(data).encode('utf-8') # 将字典转换为URL编码的字符串 response = urllib.request.urlopen('http://example.com', data) ``` urllib.parse模块 urllib.parse用于处理URL解析和构建,包括分割、组合和编码URL。常见的函数有`urlsplit()`、`urlunsplit()`、`urlencode()`等。 - `urlsplit(url)`:将URL分解为五部分(scheme、netloc、path、params、query、fragment)。 - `urlunsplit(parts)`:将五部分重新组合成URL字符串。 - `urlencode(query, doseq=False)`:将字典或元组列表编码为URL查询字符串。 urllib.error模块 urllib.error包含了处理网络请求时可能出现的异常,如HTTPError和URLError。 代理和cookie设置 urllib.request提供了一些方法来设置代理和cookie。例如,通过ProxyHandler和HTTPCookieProcessor可以分别处理代理和cookie: ```python proxy_handler = urllib.request.ProxyHandler({'http': 'http://proxy.example.com:8080'}) cookie_processor = urllib.request.HTTPCookieProcessor() opener = urllib.request.build_opener(proxy_handler, cookie_processor) urllib.request.install_opener(opener) ``` robots.txt解析 urllib.robotparser可以解析网站的robots.txt文件,判断哪些URL可以抓取,哪些不可以。 ```python rp = urllib.robotparser.RobotFileParser('http://example.com/robots.txt') rp.read() if not rp.can_fetch('*', 'http://example.com/somepage'): print('不能抓取这个页面') ``` Python的urllib模块是爬虫开发的基础工具,理解并熟练使用它可以有效提升网络编程的效率和质量。无论是在Python 2.x还是3.x中,掌握urllib的相关知识都是必不可少的。