我又在东搞西搞了,用Spynner访问网页,Spynner是什么,是一个操控一个无GUI的Webkit核心实现http访问的python模块,可以做爬虫呢,爬些需要使用js运行才有结果的网页最好.
今天终于也实现在树莓派Raspberry pi的linux上跑Spynner程序,需要用到xvfb, 不然的话会出现cannot connect x server的提示
xvfb安装: sudo apt-get install xvfb
xvfb命令行:xvfb-run sudo python /workhome/lpfrx.py
#-*- encoding: utf-8 -*- import spynner import sys reload(sys) sys.setdefaultencoding('gbk') if __name__ == "__main__": browser = spynner.Browser() #注释以下语句就是不打开窗口了 browser.show() try: browser.load(url='https://www.lpfrx.com', load_timeout=120, tries=1) except spynner.SpynnerTimeout: print 'Timeout.' else: browser.wk_fill('input[id="s"]', 'delphi') browser.wait(3) #用javascript提交结果 browser.runjs("document.forms[0].submit();") #另一种点击方式 #browser.wk_click('a[href]',wait_load=True, timeout=8) browser.wait(3) //以下是获取超链接的元素,在第6个链接点击 bb = browser.webframe.findAllElements('a') print len(bb) print sys.getdefaultencoding() anchor = bb[6] try: browser.wk_click_element_link(anchor, timeout=5) except spynner.SpynnerTimeout: print "timeou 5" browser.wait(5) html = browser.html if html: html = html.encode('utf-8') open('lpfrx.txt', 'w').write(html) browser.close()
不同的方式点击方式,其实还可以有其它方式,不过spynner中文资料好少,这东西做爬虫有点慢,不过可以访问那些用ajax方式生成的网页,非常不错,模拟登录和填数据不错,比通过com口调用IE方便.
以上程序在win7 64位和Raspberry pi linux下通过, 都要装pyqt4 .
发觉原来还有类似的模块,那个ghost.py, 有时间再搞搞.