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

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

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

    躺在沙灘上的小豬

    快樂的每一天

    自由的python o_o

    問題:
           公司的日報,每天填寫的時候總是那么巨慢,都有點恐懼它了!

    解決方案:
           讓代碼幫我們每天定時提交,這樣就可以省下精力取吹牛去了

    好了,開始吧:
           有兩種思路,大概的描述一下如下:
            一:定制一份模板的數據,每個月或者每個星期,讓它自己的獲取生成相應的數據,并提交.
            二:采用交互的界面,這樣就不要打開ie了,每天只要通過命令行就可以搞定.

    首先看登陸:

    1def login(self):    
    2    """
    3        登陸
    4    """        
    5    loginparams = urllib.urlencode({'j_username':self.username,'j_password':self.password,\
    6                'UPC_REQUEST_URI':'*.do','UPC_LOGIN_FLAG':'UPC_LOGIN_FLAG'})
    7 
    8    self.pform = urllib.urlopen(self.url,loginparams)
    9


    我們需要導入urllib. 傳人登陸的參數即可,如上面的loginparams.
    調用 

    1urllib.urlopen(url[,params])

    執行登陸.

    其次:解析登陸完畢,從數據庫種返回的內容,工號,姓名,部門,單位,地點,等等.
    換一種方式也就是說,運用regex在html種解析,得到數據庫范戶的數據.

    導入我們需要的re.

     1def parse(self):    
     2    """
     3        解析登陸完成的HTML頁面,獲取用戶相應的信息
     4    """    
     5    content = '\n'.join(self.pform.readlines())            
     6    items = ["employeeName","department","workArea","workCity","fillInDate"]
     7    for item in items:
     8        pattern = "name=\""+item+"\"\s*(size=\"\d*\")?\s*value=\"(\S*(\s*\S*)?)\""
     9        matcher = re.search(pattern,content)
    10            
    11        if matcher!=None:        
    12            self.item = matcher.groups()[1]


    regex這一部分,不明白,可以參考這里http://docs.python.org/lib/module-re.html.

    好了,下一步就是提交我們的日報:

     1def post(self):
     2        """
     3            提交日報
     4        """
     5        posturl = 'http://host/*.do'
     6    
     7        f = open(dataFileName)
     8        contents = f.readlines()
     9        
    10        #讀取data文件,判斷是否采用交互界面,還是采用data文件的數據    
    11        if contents[0]=='n':                    
    12            c = raw_input('是否采用提交當天日志(y/n)?:')
    13            if c!='y':
    14                self.fillInDate = raw_input('請輸入提交日期(格式yyyy-mm-dd):')
    15        
    16            projectId = raw_input('項目名稱代碼:')
    17            workId = raw_input('具體事項:')
    18            workContent = raw_input('工作內容:')
    19            workNum = raw_input('正常工作時長:')
    20            overtimeNum = raw_input('加班工作時長:')
    21        else:
    22            
    23            #是否采用文件中的時間,如果不采用,則采用當前時間
    24            if contents[1]=='y':                
    25                self.fillInDate = contents[2]
    26            
    27            projectId = contents[3]
    28            workId = contents[4]
    29            workContent = contents[5]
    30            workNum = contents[6]
    31            overtimeNum = contents[7]
    32        
    33        #拼湊參數     o_o
    34        postparams = urllib.urlencode({'j_username':self.username,'j_password':self.password,\
    35              'UPC_LOGIN_FLAG':'UPC_LOGIN_FLAG',\
    36                'employeeId':self.username,'employeeName':self.employeeName,\
    37                'department':self.department,'workArea':self.workArea,'workCity':self.workCity,'fillInDate':self.fillInDate,\
    38                'detailList[0].projectId':projectId,'detailList[0].workId':workId,\
    39                'detailList[0].workContent':workContent,'detailList[0].workNum':workNum,'detailList[0].overtimeNum':overtimeNum})    
    40                
    41        #提交
    42        result = urllib.urlopen(posturl,postparams)
    43        #todo:解析提過完成頁面,獲取信息
    44        #
    45        result.close()
    46


    當然,現在的data文件格式比較簡單,我們可以做的更實用一點,采用key=value的形式,或者其他.
    fun.data的樣子如下:

    y
    n
    0
    JX00001
    WK00022
    稽查需求分析
    0
    8

    第一行:是否采用當前data文件數據
    第二行:是否采用自定義時間,如果不采用,第三行忽略,如果采用,時間即為第三行的值
    第四行,第五行,第六行,日報具體的東西,不談了.
    第七行:正常工作時間
    第八行:加班時間
    完整代碼如下:

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

    嘿嘿,終于可以休息了,不用在為填寫日報而煩了

    posted on 2005-09-24 14:32 martin xus 閱讀(416) 評論(6)  編輯  收藏 所屬分類: python

    主站蜘蛛池模板: 国产免费不卡视频| 中文字幕免费在线看| 91情侣在线精品国产免费| 久久精品国产亚洲av高清漫画 | 无人在线观看免费高清视频| 亚洲色图.com| 18禁无遮挡无码国产免费网站| 亚洲福利在线视频| 91免费福利精品国产| 亚洲欧洲自拍拍偷午夜色| 日韩免费一区二区三区在线| 亚洲 日韩经典 中文字幕| 麻豆国产精品入口免费观看| 国产精品亚洲二区在线| 亚洲 无码 在线 专区| 久久国产精品免费一区| 久久亚洲sm情趣捆绑调教 | 精品国产呦系列在线观看免费| 亚洲日本va午夜中文字幕久久| 国产黄在线观看免费观看不卡| 国产精品亚洲A∨天堂不卡| 1000部禁片黄的免费看| 亚洲最大天堂无码精品区| 日韩毛片无码永久免费看| 一级做a爰片久久毛片免费陪| 精品国产综合成人亚洲区| 91九色视频无限观看免费| 中文无码亚洲精品字幕| 亚洲日韩VA无码中文字幕| 老司机69精品成免费视频| 亚洲无吗在线视频| 亚洲日本中文字幕天堂网| 最近在线2018视频免费观看| 亚洲欧美乱色情图片| 在线观看国产区亚洲一区成人| 18禁黄网站禁片免费观看不卡| 国产亚洲视频在线| 久久亚洲中文字幕精品有坂深雪| 女性自慰aⅴ片高清免费| 中国黄色免费网站| 人人狠狠综合久久亚洲|