Python实践之网络编程1-简单的网络请求程序

99 篇文章 0 订阅
Python实践之网络编程1-简单的网络请求程序

在了解python基础的语法基础上,就可以自由的去组合出自己需要各类高级功能。

由于python语言的特性,各类功能的实现都会非常快捷的。
网络变成就是python具备的高级特性之一。
 
需要进行网络编程首先需要了解几个模块urllib和urllib2
 
 
1.简单的访问请求
复制代码
import sys,urllib,urllib2

url=input("please input the url:")
url = "http://mail.126.com"

#发起请求
req = urllib2.Request(url)
fd = urllib2.urlopen(req)


#输出结果
#print fd.read()
print ("URL Retrieved:",fd.geturl())
info = fd.info()
for key, value in info.items():
    print "%s           =              %s" % (key,value)

while True:
    data = fd.read(1024)
    if not len(data):
            break
    #print data
    
    
复制代码

 

2.简单的get请求
复制代码
#构造get参数
#zipcode = sys.argv[1]
wd = input("search word:")
data = urllib.urlencode([('wd',wd)])

#构造url 拼接请求参数
url= "http://www.baidu.com"
url = url + "?" + data
print 'ursing url', url

#构造request 并请求
req = urllib2.Request(url)
fd = urllib2.urlopen(req)

#读取相应结果
while True:
    data = fd.read(1024)
    if not len(data):
        break
    #sys.stdout.write(data)
    print data
复制代码

 

3.简单的post请求
和get请求最大的差别其实就是将请求参数放到了请求体中,而不是拼接到url中
复制代码
import sys,urllib,urllib2


#构造参数
#zipcode = sys.argv[1]
wd = input("search word:")
data = urllib.urlencode([('wd',wd)])

#构造url 不需要将参数拼接到url中
url= "http://www.baidu.com"
print 'ursing url', url

#构造request 只需要将参数放到urlopen的第二个参数里
req = urllib2.Request(url)
fd = urllib2.urlopen(req,data)

#读取相应结果
while True:
    data = fd.read(1024)
    if not len(data):
        break
    #sys.stdout.write(data)
    print data
复制代码

 

 
 
 
4.登陆验证功能
等登陆验证有很多种方式,最常见的是post表单或者cookie形式的登陆验证。此类形式的的验证和post请求可能关系更加密切。
这里是最基本的http验证,由客户端向服务器端发送用户名密码。形式上一般会弹出一个登陆窗口
 
复制代码
import sys,urllib,urllib2,getpass

#定义TerminalPwd类扩展HTTPPasswordMgr,允许在需要的时候询问操作员输入密码
class TerminalPwd(urllib2.HTTPPasswordMgr):
    def find_user_password(self,realm,authuri):
        retval = urllib2.HTTPPasswordMgr.find_user_password(self,realm,authuri)
        
        if retval[0] == None and retval[1] == None:
            #didn't find it in stored values
            username = input("Login required,please input username:")
            password = input("please input password:")
            return(username,password)
        else:
            return retval


url = "http://home.asiainfo.com/"
req = urllib2.Request(url)
#需要加载额外的处理时需要使用opener,比如此处需要支持认证处理
#如果需要认证,会自动调用TerminalPwd里面的函数,如果不需要进一步检查和普通的请求一样
opener =  urllib2.build_opener(urllib2.HTTPBasicAuthHandler(TerminalPwd()))

#请求
fd = opener.open(req)

print ("URL Retrieved:",fd.geturl())
info = fd.info()
for key, value in info.items():
    print "%s           =              %s" % (key,value)
    
复制代码

 

 
 
 
 
 
0
0
« 上一篇: Dhtmlx_Scheduler分析
» 下一篇: python基础-XML解析
posted @ 2014-10-12 18:28 shall we 阅读( 193) 评论( 0) 编辑 收藏


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值