<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[Python标准库之urllib，urllib2自定义Opener]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[Python学习]]></category>
<pubDate>Thu, 22 Jun 2017 06:42:31 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能，必须使用build_opener()函数创建自定义Opener对象。<br/><br/>1. build_opener([handler1 [ handler2, ... ]])<br/><br/>参数handler是Handler实例，常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。<br/><br/>build_opener ()返回的对象具有open()方法，与urlopen()函数的功能相同。<br/><br/>如果要修改http报头，可以用：<br/><div class="code"><br/>import urllib2<br/>opener = urllib2.build_opener()<br/>opener.addheaders = &#91;(&#039;User-agent&#039;, &#039;Mozilla/5.0&#039;)&#93;<br/>opener.open(&#039;http://www.example.com/&#039;)<br/></div><br/>2. install_opener(opener)<br/><br/>安装不同的opener对象作为urlopen()使用的全局opener。<br/><br/>3. 密码验证（HTTPBasicAuthHandler）<br/><br/>HTTPBasicAuthHandler()处理程序可用add_password()来设置密码。<br/><br/>h.add_password(realm,uri,user,passwd)<br/><br/>realm是与验证相关联的名称或描述信息，取决于远程服务器。uri是基URL。user和passwd分别指定用户名和密码。<br/><br/><div class="code"><br/>import urllib2<br/>auth=urllib2.HTTPBasicAuthHandler()<br/>auth.add_password(&#039;Administrator&#039;,&#039;http://www.example.com&#039;,&#039;Dave&#039;,&#039;123456&#039;)<br/>opener=urllib2.build_opener(auth)<br/>u=opener.open(&#039;http://www.example.com/evilplan.html&#039;)<br/></div><br/>4. Cookie处理(HTTPCookieProcessor)<br/><br/><div class="code"><br/>import urllib2,cookielib<br/>cookie=cookielib.CookieJar()<br/>cookiehand=urllib2.HTTPCookieProcessor(cookie)<br/>opener=urllib2.build_opener(cookiehand)<br/></div><br/>5.代理(ProxyHandler)<br/><br/>ProxyHandler(proxies)参数proxies是一个字典，将协议名称（http，ftp）等映射到相应代理服务器的URL。<br/><br/><div class="code"><br/>proxy=ProxyHandler(&#123;&#039;http&#039;:&#039;http://someproxy.com:8080&#039;&#125;)<br/>auth=HTTPBasicAuthHandler()<br/>auth.add_password()<br/>opener=build_opener(auth,proxy)<br/></div><br/>也可以在urlopen中使用代理<br/><br/><div class="code"><br/>import urllib2 <br/>proxy = &#039;http://%s:%s@%s&#039; % (&#039;userName&#039;, &#039;password&#039;, &#039;proxy&#039;) <br/>inforMation = urllib2.urlopen(&quot;http://www.example.com&quot;, proxies=&#123;&#039;http&#039;:proxy&#125;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/></div><br/>　　
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] Python标准库之urllib，urllib2自定义Opener]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>