<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    躺在沙灘上的小豬

    快樂的每一天

    自由的python 二

    將上面的代碼重構了一下,并且添加了cookies,這樣我們就不需要每次登陸了

      1#!/usr/bin/python
      2# -*- coding: UTF-8 -*-
      3
      4import urllib
      5import cookielib, urllib2
      6import os
      7import re
      8
      9class Fun:
     10    def __init__(self,username,password,times=1,\                  dataFileName='fun.data',loginurl='',posturl='',\                  proxies={},pform=None,cookies=None):
     11        print '初始化'
     12        self.username=username
     13        self.password=password
     14        self.times = times
     15        self.loginurl=loginurl
     16        self.posturl = posturl
     17        self.proxies=proxies
     18        self.pform=pform        
     19        self.dataFileName=dataFileName
     20        self.cookies=cookielib.CookieJar()
     21        self.opener=None
     22    
     23    def login(self):    
     24        """
     25            登陸
     26        """        
     27        print '登陸'
     28        loginparams = urllib.urlencode({'j_username':self.username,\                                                'j_password':self.password,\
     29                                                                            'UPC_REQUEST_URI':'*.do',\                                                'UPC_LOGIN_FLAG':'UPC_LOGIN_FLAG'}) 
     30        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookies))
     31                        
     32        self.pform = self.opener.open(self.loginurl,loginparams)
     33        print '登陸成功'
     34                        
     35    def post(self):
     36        """
     37            解析登陸完成的HTML頁面,獲取用戶相應的信息
     38        """    
     39        print '解析html頁面,獲取服務器端返回的內容'
     40        content = '\n'.join(self.pform.readlines())            
     41        items = ["employeeName","department","workArea","workCity","fillInDate"]
     42        values = []
     43        for item in items:
     44            pattern = "name=\""+item+"\"\s*(size=\"\d*\")?\s*\                                    value=\"(\S*(\s*\S*)?)\"\s*id=\""+item+"\""
     45            matcher = re.search(pattern,content)
     46            
     47            if matcher!=None:        
     48                values.append(matcher.groups()[1])
     49                print values
     50            else:
     51                values.append('')
     52        print '解析完成'                
     53        """
     54            提交日報
     55        """        
     56                
     57        print '讀取data文件:'+self.dataFileName
     58        f = open(self.dataFileName)
     59        contents = f.readlines()
     60        
     61        #讀取data文件,判斷是否采用交互界面,還是采用data文件的數據    
     62        
     63        if contents[0]=='n':                    
     64            c = raw_input('是否采用提交當天日志(y/n)?:')
     65            if c=='n':
     66                self.fillInDate = raw_input('請輸入提交日期(格式yyyy-mm-dd):')        
     67            projectId = raw_input('項目名稱代碼:')
     68            workId = raw_input('具體事項:')
     69            workContent = raw_input('工作內容:')
     70            workNum = raw_input('正常工作時長:')
     71            overtimeNum = raw_input('加班工作時長:')
     72        else:
     73            
     74            #是否采用文件中的時間,如果不采用,則采用當前時間
     75            if contents[1]=='y':                
     76                self.fillInDate = contents[2]
     77            
     78            projectId = contents[3]
     79            workId = contents[4]
     80            workContent = contents[5]
     81            workNum = contents[6]
     82            overtimeNum = contents[7]
     83        
     84        #拼湊參數     o_o
     85        paramsmap = {'employeeId':self.username,\                         'employeeName':values[0],\
     86             'department':values[1],\             'workArea':values[2],\             'workCity':values[3],\             'fillInDate':values[4],\
     87             'detailList.projectId':[projectId],\             'detailList.workId':[workId],\
     88             'detailList.workContent':[workContent],\             'detailList.workNum':[0],             'detailList.overtimeNum':[8]}
     89        
     90        keys = paramsmap.keys()
     91        for key in keys:
     92            print key,':',paramsmap[key]
     93        
     94        postparams = urllib.urlencode(paramsmap)
     95        print    'postparams:'+postparams    
     96        #提交
     97        #opener = urllib2.build_opener(self.cookies)       
     98        print '開始提交日報'
     99        result = self.opener.open(self.posturl,postparams)
    100        #result = urllib2.urlopen(posturl,postparams)
    101        #todo:解析提過完成頁面,獲取信息
    102        #        
    103        result.close()
    104        print '日報填寫成功'
    105        
    106    def close(self):
    107        """
    108        """
    109        if not self.pform:
    110            self.pform.close()
    111        
    112
    113
    114if __name__=='__main__':    
    115    #測試一下
    116    try:
    117        test = Fun(username='',password='',loginurl='',posturl = '')
    118        test.login()
    119        test.post()
    120        test.close()
    121    except IOError:        
    122        raise


    初始化
    登陸...
    登陸成功
    解析html頁面,獲取服務器端返回的內容
    ['\xd0\xec\xcf\xe9\xbe\xfc']
    ['\xd0\xec\xcf\xe9\xbe\xfc', '\xc4\xcf\xbe\xa9']
    ['\xd0\xec\xcf\xe9\xbe\xfc', '\xc4\xcf\xbe\xa9', '\xbb\xaa\xb6\xab']
    ['\xd0\xec\xcf\xe9\xbe\xfc', '\xc4\xcf\xbe\xa9', '\xbb\xaa\xb6\xab', '\xc4\xcf\x
    be\xa9']
    ['\xd0\xec\xcf\xe9\xbe\xfc', '\xc4\xcf\xbe\xa9', '\xbb\xaa\xb6\xab', '\xc4\xcf\x
    be\xa9', '2005-09-24 17:45:40.0']
    解析完成
    讀取data文件:fun.data
    detailList.workId : ['10003102\n']
    employeeId : 404
    workCity : 南京
    detailList.projectId : ['JX0001\n']
    detailList.overtimeNum : [8]
    detailList.workNum : [0]
    detailList.workContent : ['\xbb\xfc\xb2\xe9\xd0\xe8\xc7\xf3\xb7\xd6\xce\xf6\n']
    fillInDate : 2005-09-24 17:45:40.0
    department : 南京
    workArea : 華東
    employeeName : 徐祥軍
    postparams:detailList.workId=%5B%2710003102%5Cn%27%5D&employeeId=404&workCity=%C
    4%CF%BE%A9&detailList.projectId=%5B%27JX0001%5Cn%27%5D&detailList.overtimeNum=%5
    B8%5D&detailList.workNum=%5B0%5D&detailList.workContent=%5B%27%5Cxbb%5Cxfc%5Cxb2
    %5Cxe9%5Cxd0%5Cxe8%5Cxc7%5Cxf3%5Cxb7%5Cxd6%5Cxce%5Cxf6%5Cn%27%5D&fillInDate=2005
    -09-24+17%3A45%3A40.0&department=%C4%CF%BE%A9&workArea=%BB%AA%B6%AB&employeeName
    =%D0%EC%CF%E9%BE%FC
    開始提交日報
    日報填寫成功

    posted on 2005-09-24 18:22 martin xus 閱讀(571) 評論(5)  編輯  收藏 所屬分類: python

    主站蜘蛛池模板: 亚洲色大成网站www久久九| 亚洲最新黄色网址| 四虎成人精品一区二区免费网站| 午夜私人影院免费体验区| 亚洲国产一区在线观看| 九九免费久久这里有精品23| 久久精品毛片免费观看| 亚洲电影国产一区| 一区二区在线视频免费观看| 免费在线不卡视频| 中国一级毛片视频免费看| 在线观看亚洲av每日更新| 亚洲精品无播放器在线播放| 精品久久洲久久久久护士免费 | 亚洲一本到无码av中文字幕 | 久久99热精品免费观看动漫| 亚洲国产高清视频| 永久免费在线观看视频| 亚洲kkk4444在线观看| 免费观看国产小粉嫩喷水| 一个人免费观看日本www视频| 亚洲国产精品无码中文字| 18以下岁毛片在免费播放| 一本天堂ⅴ无码亚洲道久久| 免费一级毛片在播放视频| 国产午夜精品理论片免费观看 | 亚洲AV乱码久久精品蜜桃| 又粗又大又黑又长的免费视频| 亚洲AV无码成人精品区日韩| 亚洲av午夜成人片精品电影| 免费看搞黄视频网站| 亚洲色欲色欲www在线播放| 亚洲性日韩精品国产一区二区| 日韩免费人妻AV无码专区蜜桃| 国产成人亚洲精品狼色在线| 免费国产污网站在线观看15| 久久精品国产亚洲av麻豆蜜芽 | 国产成人午夜精品免费视频| 一级**爱片免费视频| 亚洲免费网站在线观看| 亚洲国产精品日韩专区AV|