python [3.2] urllib的使用
来源:互联网 发布:java如何解压zip 编辑:程序博客网 时间:2024/05/16 22:54
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)的模块。它用urlopen函数的形式提供了一个非常简洁的接口。这使得用各种各样的协议获取url成为可能。它同时 也提供了一个稍微复杂的接口来处理常见的状况-如基本的认证,cookies,代理,等等。这些都是由叫做opener和handler的对象来处理的。
一:基本使用方法+异常处理
from urllib.error import URLError,HTTPErrorimport urllib.requestimport urllib.parseurl='http://www.baidu.com/s'values={'wd':'python', 'opt-webpage':'on', 'ie':'gbk'}url_values=urllib.parse.urlencode(values)#print(url_values)url_values=url_values.encode(encoding='UTF8')full_url=urllib.request.Request(url,url_values)#or ony one sentense:full_url=url+'?'+url_valuestry: response=urllib.request.urlopen(full_url) #open=urlopenexcept HTTPError as e: print('Error code:',e.code) except URLError as e: print('Reason',e.reason)the_page=response.read()print(the_page)
调用urlopen函数对请求的url返回一个response对象。这个response是一个file-like的对象,这意味着你能用.read()函数操作这个response对象
注意:urllib.request.Request(url,data) data参数是要进行任意编码(utf8...)的,否则会报POST data should be bytes or an iterable of bytes. It cannot be str.错误.
或者用url+'?'+url_values来合成full_url ,只用一条语句,代码更简洁
二:add headers to HTTP request
user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'....headers={'User-Agent':user_agent}....full_url=urllib.request.Request(url,url_values,headers)
三:Openers 和Handlers
当你获取一个URL时,你使用一个opener(一个可能以一个比较迷糊名字命名的实例–urllib2.OpenerDirector)。正常情况下
我们一直使用默认的opener,但你也可以创建自定义的openers。opener使用操作器(handlers)。所有的重活都交给这些handlers来做。
每一个handler知道以哪种url协议(http,ftp等等)打开url,或者怎么处理打开url时的某些方面,如,HTTP重定向,或者HTTP cookie。
你将会创建openers如果你想要用安装特别的handlers获取url,例如,获取一个处理cookie的opener,或者一个不处理重定向的opener。
默认opener有对普通情况的操作器 (handlers)- ProxyHandler, UnknownHandler, HTTPHandler, HTTPDefaultErrorHandler, HTTPRedirectHandler, FTPHandler, FileHandler, HTTPErrorProcessor.
创建Openers:
枚举一个OpenerDirector,然后多次调用.add_handler(some_handler_instance)来创建一个opener。
或用build_opener,这是一个很方便的创建opener对象的函数,它只有一个函数调用。build_opener默认会加入许多handlers
import urllib.requestproxy_support = urllib.request.ProxyHandler({})opener = urllib.request.build_opener(proxy_support)urllib.request.install_opener(opener)
- python [3.2] urllib的使用
- python [3.2] urllib的使用
- python httplib urllib的使用
- Python urllib.request 的使用
- 【Python】urllib模块的使用
- python urllib的使用介紹
- Python中urllib模块的使用
- 使用python 3的urllib.request库
- python多线程爬虫学习--urllib的使用
- python之urllib库的基本使用
- python urllib使用
- python urllib使用
- python urllib2, urllib使用
- python urllib使用
- python urllib库使用
- python urllib初级使用
- Python 的 urllib
- Python 的 urllib
- Windows 7 下,mysql的数据库文件默认路径
- 用rand()和srand()产生伪随机数的方法总结
- SGU 137 Funny Strings
- 链表
- SQL Server2005中触发器的运用
- python [3.2] urllib的使用
- poj-2965
- 一个java正规表达式工具类
- VS2005新建应用工程出错解决方法
- N年时间下来读书的感觉差异
- 微博文摘——女人与ITIL
- 我的C/C++之路-005课(模拟路由表的路由选择功能)
- 辨析这几个概念:dBi,dBd,dBc,dBm,dB
- Linux内核设计与实现——7 中断与中断处理(5)——注册中断处理程序