昨晚搞定的,最近好熟识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
你好,我是一个刚刚接触pyqt的新人,想请教您一下从哪里可以获得比较系统的教程?我主要就是想学会使用qtwebkit,但是网上似乎比较难找到相关的教程。
网上没玩去系统学习的教程,自己善用google吧
。。。