urllib2方法介绍


1. 刷页面 urlopen 
接收一个 字符串型的url 或者是 一个Request对象,并且打开这个url返回一个像文件类型的返回值
import urllib2
resource=urllib2.urlopen("http://www.dpuban.com") // 1. 向域名发出请求 2. 服务器响应
content=resource.read()
print content


2. 向网页提供数据
import urllib
import urllib2
url='http://www.douban.com'
info={'name':'Lily','Location':'China'}
data=urllib.urlencode(info)     //#info 需要被编码为urllib2能理解的格式,这里用到的是urllib
req=urllib2.Request(url,data)
resource=urllib2.urlopen(rep)
content=resource.read()
print content


3. 头信息(header), 用来伪装成浏览器
import urllib
import urllib2
url='http://www.someserver.com/cgi-bin/register.cgi'
user_agent='Mozilla/4.0(compatible;MSIE5.5;Windows NT)'
values={'name':'Lily','location':'China','language':'python'}
headers={'User-Agent':user_agent}//将user_agent写入头信息
data=urllib.urlencode(values)
req=urllib2.Request(url,data,headers)
response=urllib2.urlopen(req)
content=response.read()
print content


4. 使用代理服务器(比如IP被封,或者IP访问次数受限)
import urllib2
proxy_support=urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})
opener=urllib2.build_opener(proxy_support,HTTPHandler)
urllib2.install_opener(opener)
content=urllib2.urlopen('http://www.douban.com').read()


当你获取一个url时,你可以使用一个opener(openerdirector),opener使用handler来处理任务,每一个handler知道怎么以特定的url协议打开url,或者怎么处理打开url的某些方法
可以使用build_opener,这是一个很方面的创建opener对象的函数,它只有一个函数调用
install_opener能设置一个全局opener对象,这意味着调用urlopen将会使用到你刚安装的opener
opener对象都有一个open方法,它可以以一种和urlopen函数相同的方式直接调用来获取url,所以除非是为了方便,不然没有必要调用install_opener
OpenerDirector操作类是一个管理很多处理类(Handler)的类:分别有下面的处理类:BaseHandler,HTTPErrorProcessor,HTTPDefaultErrorHandler,HTTPRedirectHandler,ProxyHandler,
AbstractBasicAuthHandler,HTTPBasicAuthHandler,ProxyBasicAuthHandler,AbstractDigestAuthHandler,
ProxyDigestAuthHandler,AbstractHTTPHandler,HTTPHandler,HTTPCookieProcessor,UnknownHandler,
FileHandler,FTPHandler,CacheFTPHandler


5. 需要登录的情况
5.1 cookie的处理
import urllib2,cookielib
cookie_support=urllib2.HTTPCookieProcessor(cookielib.CookieJar())
opener=urllib2.build_opener(cookir_support,urllib2.HTTPHandler)
urllib2.install_opener(opener)
content=urllib2.urlopen('http"//XXXX').read()


5.2表单的处理
先要使用firebug来看提交一个表单发送了哪些包
比如发送了 username,password,continueURI,fk,login_submit
(如果fk是随机生成的,还需要再一次的访问以下网站,然后用正则表达式截取返回的fk项)
import urllib2
postdata=({'username':'XXXX','password':'XXX','continueURI':'http://www.verycd.com/','fk':fk,'login_submit':'登录'})
req=urllib2.Request(url='http://secure.verycd.com/signin/*/http://www.verycd.com/',data=postdata)
result=urllib2.urlopen(req).read()


6.反盗链
所谓的反盗链设置就是检查你发送请求的header里面,referer站点是否是他自己的
headers={'Referer':'http://www.cnbeta.com/articles'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值