闯红灯大难不死的

刚才网上微博看见的,闯红灯大难不死的,这人积了多少福份啊,虽然不知道这事真假啊
闯红灯大难不死的

发表在 一般生活 | 留下评论

qtwebkit搞不定input type=”file”

qtwebkit搞不定input type=”file” , 想在新浪微博上自动发图片,无奈搞到弹出文件选择窗口就不知道怎么样进行下去了,浏览器问题,不能set value的值,看来发图片的话,还是需要用到新浪微博的sdk了,算了,就发自动发文字算了,嘻嘻.

后来我想到了方法,就是控制鼠标移动和键盘输入,windows下用pywin32控制窗口,linux下使用xdotool,大概都可以解决问题.

发表在 一般生活 | 留下评论

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 | 3条评论

还是原生的QTwebkit好用

之前使用spynner,感觉这个python的模块虽然方便,但很多功能满足不了我,如javascript与python的交互,好像没有方法似的,最后我还是用回qtwebkit来操控,还是原生的QTwebkit好用,发觉这东西网上还是很多资料的,当然以英文的居多了,浪费了两晚的时间,终于用它满足了我的程序功能,现在可以用它来截图,网页上随意元素的截图,还有就是登录了,哈哈,这样可以做很多“坏事”了,但发觉还是有点问题的,在操作过程中,使用raw_input的话,打开的qtwebkit窗口会出错错误,完全死掉,找不到是什么问题,有待解决方法呢.

发表在 技术生活 | 留下评论

今年雨水很充足啊

清明时节雨纷纷,现在天气很应节呢,天天下雨,所以话今天雨水很充足啊,不知道几时能好天呢,每年的四月都要下雨的,看来要下到月未才有可能见晴天了。

发表在 一般生活 | 留下评论

Raspberry Pi树莓派作PXE Server

昨晚搞定Raspberry Pi树莓派作PXE Server, 其实安装就是跟我的【debian下的pxe启动winpe】一样,不同的就是不安装tftpd-hpa, 安装tftpd.

安装tftpd:
sudo apt-get install tftpd

然后更改 /etc/inetd.conf 的启动路径,文件使用【debian下的pxe启动winpe】的那个下载文件。

然后重启inetd: /etc/init.d/openbsd-inetd restart

不过我没有使用dhcp3-server, 使用家里的tomato路由上的dns设置: dhcp-boot=pxelinux.0,,192.168.5.127

192.168.5.127是Raspberry Pi的ip

现在家里装机环境很方便啊,哈哈, Raspberry Pi树莓派越来越实用啊。

发表在 Raspberry pi树莓派 | 留下评论