qtwebkit登录新浪微博代码

昨晚搞定的,最近好熟识python的qtwebkit的操作,以下是qtwebkit登录新浪微博的python源码,其实发微博的都搞定了,但未能完善,这个理清思路再细致点的搞.

这样操作发微博,好过用新浪的微博api sdk来搞,不过就是复杂点就是了.

以下是qtwebkit登录新浪微博代码

#coding=utf8
import sys,os
import time
import string
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *
#from PyQt4.QtWebKit import *
from PyQt4 import QtGui, QtCore, QtWebKit, QtNetwork
#from PyQt4.QtCore import QObject, QVariant,QPoint
from PyQt4.QtCore import *





class Sp():
    def __init__(self, url,app):
        self.user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100124 Firefox/3.6 (Swiftfox)'
        self.app = app
        self._url = url
	self.webView = QtWebKit.QWebView()
	self.textx =""
        self.mm=0
	self.p=1
        
        
        self.js_click = """
             var evt = document.createEvent("MouseEvents");
             evt.initMouseEvent("click", true, true, window, 1, 1, 1, 1, 1, false, false, false, false, 0, this);
             this.dispatchEvent(evt);
             """


   

    def save(self):
        
        
        print "start...",self.mm
        data = self.webView.page().currentFrame().documentElement().toInnerXml()
	self.textx = data
        
        
	while True:
	  if len(self.textx)>0:
	    print "wang cheng"
	    break
        
	open("htm0.txt","w").write(data)
              
	print 'start...'

	
        
	
	if self.p==1:       
	  
	  userx = "[email protected]"
          pwdx  = "123456789"

	  jss = "document.getElementsByName('username')[0].value='"+ userx +"';document.getElementsByName('password')[0].value='"+ pwdx +"';document.getElementsByName('password')[0].focus();"
	  print jss
	  self.webView.page().mainFrame().evaluateJavaScript(jss) 
	  elem = self.webView.page().mainFrame().findAllElements("a[tabindex='6']")

	  if len(elem)==1:
	     print 'elem len:',len(elem)
	     
	     #elem[0].evaluateJavaScript(self.js_click)
	     #elem[0].evaluateJavaScript("this.value=123456789;")
	      
	  
	  sa= unicode(data).encode("utf8")
	  open("htm1.txt","w").write(sa)
	  self.p=7	  
	  self.mm=0
	  
	  

	  
	   
        if self.p==7:
	  self.timeoutTimer.stop() 

	self.mm=self.mm+1
	print "finish......end",self.p,self.mm
	
	
        
	#self.app.processEvents()
	#self.app.quit()
	#sys.exit()

    def timetest(self):
       self.timeoutTimer = QTimer() 
       self.timeoutTimer.start(4000)
       self.timeoutTimer.timeout.connect(self.save)
       #self.timeoutTimer.stop() 

    

    def loadx(self):
        self.finishedx =False
        #self.webView.loadFinished.connect()
        self.webView.load(QtCore.QUrl(self._url))

    def crawl(self):    
        
        
        
        #QtCore.QObject.connect(self.webView,QtCore.SIGNAL("loadFinished(bool)"),self.timetest())
	self.webView.loadFinished.connect(self.timetest)
	#self.webView.loadProgress.connect(self.print_percent)
	self.webView.load(QtCore.QUrl(self._url))	
	self.webView.show()
	







#sys.exit()  


app = QtGui.QApplication(sys.argv)
s = Sp("http://weibo.com/",app)
s.crawl()

#while not s.finishedx:
#   app.processEvents()
#   time.sleep(0.01)

print "ok ok 0"  


sys.exit(app.exec_())

timetest函数是打开网址延时4秒, 等所有东西加载完毕。

换成自己的登录帐号和密码,
然后注释这行: #elem[0].evaluateJavaScript(self.js_click) , 才可以提交的

关于python的qtwebkit国内资料还是少,好在我的英语基础还是不错,google翻译辅助下,终于在国外找到点能用的资料.

继续学习qtwebkit去…

源文件: sweibo_1.py

关于无聊人

一个无聊人而已
此条目发表在python分类目录。将固定链接加入收藏夹。

qtwebkit登录新浪微博代码》有3条回应

  1. 柴郡说:

    你好,我是一个刚刚接触pyqt的新人,想请教您一下从哪里可以获得比较系统的教程?我主要就是想学会使用qtwebkit,但是网上似乎比较难找到相关的教程。

  2. 无聊人说:

    网上没玩去系统学习的教程,自己善用google吧

  3. xx说:

    。。。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注