python : COM-IE 操作1

来源:互联网 发布:淘宝卖家用什么软件 编辑:程序博客网 时间:2024/05/16 06:51
[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. # -*- coding:UTF-8 -*-   
  2. from time import sleep  
  3. import win32com.client  
  4. from win32com.client import DispatchEx  
  5.   
  6.   
  7. class COM_IE:  
  8.     def __init__(self,url=None):  
  9.         self.url = url  
  10.         self.Visible = 1  
  11.         self.ie = self.openIE(url)  
  12.   
  13.     def ExistIE(self,url):  
  14.         ShellWindowsCLSID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'  
  15.         ies=DispatchEx(ShellWindowsCLSID)  
  16.         if len(ies)==0:  
  17.             return None  
  18.         for ie in ies:  
  19.             if ie.LocationURL==url:  
  20.                 return ie  
  21.         return None  
  22.           
  23.     def NewIE(self,url):  
  24.         ie = DispatchEx("InternetExplorer.Application")  
  25.         ie.Visible = self.Visible  
  26.         ie.Navigate(url)  
  27.         return ie  
  28.           
  29.     def openIE(self,url):  
  30.         ie = self.ExistIE(url)  
  31.         if ie==None:  
  32.             ie = self.NewIE(url)  
  33.         return ie  
  34.           
  35.     def WaitIE(self):  
  36.         # while self.ie.Busy:  
  37.             # leep(1)  
  38.         while 1:      
  39.             state = self.ie.ReadyState      
  40.             if state ==4:   
  41.                 # print "load done..."  
  42.                 break      
  43.             sleep(1)  
  44.               
  45.     def Visible(self):  
  46.         self.ie.Visible = self.Visible  
  47.           
  48.     def GetBody(self):  
  49.         self.WaitIE()  
  50.         return self.ie.Document.body  
  51.           
  52.     def GetNodes(self,parentNode,tag):  
  53.         """ 
  54.         >>> coldiv=GetNodes(body,"div") 
  55.         """  
  56.         childNodes=[]  
  57.         for childNode in parentNode.getElementsByTagName(tag):  
  58.             childNodes.append(childNode)  
  59.         return childNodes  
  60.           
  61.     def NodeByAttr(self,Nodes,nodeattr,nodeval):  
  62.         """ 
  63.         >>> div_id_editor=NodeByAttr(coldiv,"id","editor_ifr") 
  64.         """  
  65.         for node in Nodes:  
  66.             if str(node.getAttribute(nodeattr))==nodeval:  
  67.                 return node  
  68.         return None  
  69.   
  70.     ''''' 
  71.     def SetNodeHtml(self,node,val): 
  72.         node.innerHTML=val   
  73.      
  74.     def SetNodeVal(self,node,val): 
  75.         node.value=val   
  76.  
  77.     def NodeClick(self,node): 
  78.         node.click() 
  79.     '''  
  80.     def SetNodeHtml(self,body,node_type,node_attr,node_attr_val,node_inner_html):  
  81.         tags = self.GetNodes(body,node_type)  
  82.         node = self.NodeByAttr(tags,node_attr,node_attr_val)  
  83.         node.innerHTML = node_inner_html  
  84.               
  85.       
  86.     def SetNodeVal(self,body,node_type,node_attr,node_attr_val,node_value):  
  87.         tags = self.GetNodes(body,node_type)  
  88.         node = self.NodeByAttr(tags,node_attr,node_attr_val)  
  89.         node.value = node_value  
  90.   
  91.     def NodeClick(self,body,node_type,node_attr,node_attr_val):  
  92.         tags = self.GetNodes(body,node_type)  
  93.         node = self.NodeByAttr(tags,node_attr,node_attr_val)  
  94.         node.click()  
  95.       
  96.     def Quit(self):  
  97.         self.ie.Quit()  
  98.   
  99.   
  100.   
  101.   
  102. if __name__=="__main__":  
  103.   
  104.     url = "http://www.baidu.com/"  
  105.     IE = COM_IE(url)  
  106.     BODY = IE.GetBody()  
  107.       
  108.     IE.SetNodeVal(BODY,"input","id","kw","agoago2009")  
  109.     IE.NodeClick(BODY,"input","id","su")  
  110.       
  111.     raw_input('click enter to exit')  
  112.     IE.Quit()         
  113.       
  114.       
  115.       

0 0
原创粉丝点击