Spynner访问网页

我又在东搞西搞了,用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, 有时间再搞搞.

关于无聊人

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

发表回复

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