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 | 留下评论

golang语言获取网页

昨天用新学的golang即go语言编程,又搞了下获取网页的程序,以下是代码记录,网上好像好少获取网页的资料,不过还是有几个例子的,以下代码都是从网上摘录下来再修改一下.

package main
 
import (
        "fmt"
        "net/http"
        "io/ioutil"
        "time"
)
 
 
func getwangye(url string) string {
    for h:=1;h<4;h++{    
        r, err := http.Get(url)
       if err != nil {
          fmt.Printf("%v\n", err)
            time.Sleep(time.Second * 4)
            continue            
       }
     
       defer r.Body.Close()
 
       body, err:= ioutil.ReadAll(r.Body)
            
       return string(body)
         
     } 
     return "nonono"

}
 
func main() {
        url := "https://www.lpfrx.com"
        b := getwangye(url)
        fmt.Println(b)
}

上边的代码就是访问网页,如果获取网址失败,再尝试三次,访问失败输出”nonono”字符,暂时不知道怎样设定超时的秒数.

本想搞获取链接的代码,用正则或者用goquery模块等,但还没有学会这方面的方法,一步一步来吧,向着蜘蛛爬虫的编程方向进发。

还有想说的是,go语言是可以编译的,编译后执行程序很快.

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

今天在学习golang语言

今天在学习golang语言, 即是go语言,折腾了差不多一天,总算有点入门的感觉,不过go语言的错误处理机制很不爽,跟其它类型的语言处理机制不同,好不习惯,安装在Raspberry Pi, 未编译时还是有点慢,编译后就快很多了,go语言,热门语言,要学习的, 话说今天暴雨呢,没得走街上去,只能乖乖的在电脑前边了,不过眼睛还是继续痛呢, 看来要找天看看医生先得.
撤回go语言,网上好像不太多资料似的,要看看手册了解一下先得, 现在看来还是觉得上手不难,不过习惯了python, 对golang语言的写法不习惯,别扭啊.
准备慢慢的学习,写个网络爬虫的例子,写个应用学习才会进步快.

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

还有pcDuino和Cubieboard

除了Raspberry Pi树莓派外,还有pcDuino和Cubieboard这两块板子,都是有1G主频和1G RAM, 都有gpioh输出,而且Cubieboard有Sata接口,淘宝都有得卖,价钱都是300~400之间,真想再败家呢,好在现在没钱,哈哈,不过就算买,不知道应该买那块好呢,因为不知道这两块板好不好,我都是拿来做NAS或者开发服务器,Cubieboard有Sata口比较吸引,GPIO输出口恐怕没时间玩呢,等有工作再考虑再败家了,或许迟点有更好的开发板出现呢.

Cubieboard淘宝价格: 375.00
Cubieboard

pcDuino淘宝价格: 370.00
pcDuino

Raspberry Pi树莓派淘宝价格: 268.00
Raspberry Pi树莓派

路过有兴趣购买的话点击上述图片去看看吧! 至于买哪个好呢? 看自己需要吧.

发表在 Raspberry pi树莓派 | 3条评论

不是很大雨呢

本来天气报告说会有局部伴有雷雨大风等强对流天气,但这两天就是大风而已,不是很大雨呢,雷雨确实没有,就只是今天下午大雨而已,虽然外边现在有着乌黑黑的雨云,但就是不下雨,像恐吓你一样而已,其实我希望它暴雨点的,这样好天就来得快了,虽然话清明时节雨纷纷,但现在才来暴雨,有点早了吧, 下就干脆点,来点大暴雨,这样不好玩呢.

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

终于开始近视了

这两天发觉右眼近视了,终于开始近视了,这么多年对电脑都没事,感觉近视好像突然发生似的,唉,悲剧啊,突然很不习惯这个世界有点模糊,不过朋友说,这可能不会是近视,近视是不会突然发生的,网上查询来,有可能是眼睛发炎,所以昨天我买了曼秀雷敦眼药水来滴眼睛,希望有点作用吧,今后要改变下作息时间,尽量早点睡先得, 我发觉我还是很不接受我近视的事实呢。

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