appengine建立自己的web service抓取新浪图片

twitter一位朋友提到想抓取新浪娱乐http://slide.ent.sina.com.cn的高清图片,省得一张张去翻看。

首先分析这个需求可不可以完成,打开网页源代码,哇,原来所有图片地址在第一页就能看到,而且图片地址出现的很有规律,这就很容易搞定了。

image

前一阵看过一个Python的类库叫做beautifulsoap,它可以完成解析html的工作,加上appengine的支持,简单到爆。

1,先下载python以及google appengine,如果没有appengine账号申请一个即可,如果不清楚google一下都能找到。

2,下载beautifulsoap,解压BeautifulSoup.py到你项目目录里面就可以了。

3,在app.yaml里面加入,这样就把soap这个网址定向到img.ly了:

– url: /soap/.*
        script: img.py
        secure: optional

4,建立img.py,main函数部分使用google的webapp框架,关联到SoapLink类:

image

5,建立SoapLinks类,可以参考appengine的文档:

image

其中要注意的是beautifulsoap解析出来的是一个Tag对象(而不是String),所以要用ccontents[0]来获得string,这个花了我一些时间。

然后就可以部署服务了,具体可参考appengine或者留言问我。

demo:http://ucfcuk.appspot.com/soaplinks/ 加上你要访问的新浪娱乐地址

如:http://slide.ent.sina.com.cn/slide_4_703_11949.html

image

代码:http://gist.github.com/487246