您的位置:首页 > 编程语言 > Python开发

Python学习urllib2模块使用

2017-05-18 09:17 375 查看
urllib包和urllib2包基于httplib包之上,提供高层次的抽象,用于处理url请求,urllib 和 urllib2 可以更方便地进行 HTTP GET 和 POST 等各种操作。

(1)urllib2.Request(url[,
data[, headers]]) ,发送请求,创建request后,还可以进行其他添加

url: 请求的链接。如:'http://www.xiupin.com/index.html'
data: 请求数据
headers: 请求头信息

(2)urlopen(url) ,获取响应,除了"http:",url同样可以使用"ftp:","file:"等来替代

(3)response.read(),获取响应内容

利用cookie登录XP,并获取用户信息:

import urllib2
import cookielib
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
def login(HOST, username, password):  
    #登录第一步:reg.163.com  
    URL_reg = "https://reg.163.com/logins.jsp?product=paopao&domains=163.com"
    DATA = "username=%s&password=%s&url=http://paopao.163.com/authAndRedirect?redirectURL=http://www.xiupin.com/" % (username, password) 
    request = urllib2.Request(URL_reg,DATA)
    #添加请求头信息
    request.add_header("Content-Type", "application/x-www-form-urlencoded")
    request.add_header("Accept", "text/html, application/xhtml+xml, */*")
    request.add_header("Referer", "http://www.xiupin.com")
    request.add_header("Accept-Language", "zh-CN")
    request.add_header("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)")
    request.add_header("Host", "reg.163.com")  
    request.add_header("DNT", "1")
    request.add_header("Connection", "Keep-Alive")
    response = opener.open(request)       #发送POST请求
    #response = urllib2.urlopen(request)    
    #print response.read()
    #登录第二步(跳转):paopao.163.com
    URL3 = "http://paopao.163.com/authAndRedirect?username=%s&redirectURL=http://www.xiupin.com/" % username
    request3 = urllib2.Request(URL3)
    response3 = opener.open(request3)  #发送GET请求
    #print response3.read()
    #for index in cookie:
        #print index.name,index.value
def getUserInfo(URL2):
    #URL2 = "http://www.xiupin.com/profile/getUserInfo"
    DATA2 = ""
    request2 = urllib2.Request(URL2,DATA2)
    response2 = opener.open(request2)       #发送POST请求
    print response2.read()

urllib包和urllib2包基于httplib包之上,提供高层次的抽象,用于处理url请求,urllib 和 urllib2 可以更方便地进行 HTTP GET 和 POST 等各种操作。

(1)urllib2.Request(url[,
data[, headers]]) ,发送请求,创建request后,还可以进行其他添加

url: 请求的链接。如:'http://www.xiupin.com/index.html'
data: 请求数据
headers: 请求头信息

(2)urlopen(url) ,获取响应,除了"http:",url同样可以使用"ftp:","file:"等来替代

(3)response.read(),获取响应内容

利用cookie登录XP,并获取用户信息:

import urllib2
import cookielib

cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

def login(HOST, username, password):  
    #登录第一步:reg.163.com  
    URL_reg = "https://reg.163.com/logins.jsp?product=paopao&domains=163.com"
    DATA = "username=%s&password=%s&url=http://paopao.163.com/authAndRedirect?redirectURL=http://www.xiupin.com/" % (username, password) 
    
    request = urllib2.Request(URL_reg,DATA)
    #添加请求头信息
    request.add_header("Content-Type", "application/x-www-form-urlencoded")
    request.add_header("Accept", "text/html, application/xhtml+xml, */*")
    request.add_header("Referer", "http://www.xiupin.com")
    request.add_header("Accept-Language", "zh-CN")
    request.add_header("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)")
    request.add_header("Host", "reg.163.com")  
    request.add_header("DNT", "1")
    request.add_header("Connection", "Keep-Alive")
    
    response = opener.open(request)       #发送POST请求
    #response = urllib2.urlopen(request)    
    #print response.read()
    
    #登录第二步(跳转):paopao.163.com
    URL3 = "http://paopao.163.com/authAndRedirect?username=%s&redirectURL=http://www.xiupin.com/" % username
    request3 = u
9ebf
rllib2.Request(URL3)
    response3 = opener.open(request3)  #发送GET请求
    #print response3.read()
    
    #for index in cookie:
        #print index.name,index.value
    
def getUserInfo(URL2):
    #URL2 = "http://www.xiupin.com/profile/getUserInfo"
    DATA2 = ""
    request2 = urllib2.Request(URL2,DATA2)
    response2 = opener.open(request2)       #发送POST请求
    print response2.read()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  自动化