用SAS提取picasa相册缩略图源代码中的图片URL列表(组图)
我使用google picasa来管理、编辑、上传我的照片,我在博客中经常图文并茂,需要引用宽度不超过540PX的照片,但是picasaweb相册并不支持生成宽度为500的图片列表,因此,我以前总是一张一张把需要的图片地址复制到"松鼠HTML编辑器"中,有时候一次上传数百张照片,这样一张一张复制地址,需要等待图片打开、需要复制粘贴每张图片地址,非常浪费时间。于是,我使用这种办法来提高效率:
http://www.qixianglu.cn/630664.html
1、在picasaweb相册页面你可以看到本相册内所有图片缩略图列表。下图使用的大型缩略图,宽288像素。推荐使用小型缩略图,宽度只有72像素,这样对于那些照片数量非常多的相册,打开速度比较快。
2、按住鼠标左键拖动选中你需要的图片,然后在选中的图片上点右键,在弹出的窗口中选择复制(IE中),这样你复制了选中区域的HTML代码。
3、然后粘贴在一个html编辑器的所见即所得界面。forcode用的是Zoundry Raven博客发贴工具,有design、XHTML和preview三个界面,在XHTML界面下可以看到所复制的内容的HTML源代码。可以看到,每一张缩略图的html源代码非常冗余,加入了DIV层和很多垃圾代码,如果直接将这些代码发到博客上,非常影响网页速度。下面forcode编写的SAS小程序就是要从这一段冗余的HTML代码中抽取出图片地址,下面的代码中我们只需要这个图片地址,其他部分都是垃圾:http://lh5.ggpht.com/wufeng1211/SFDDqEBgEdI/AAAAAAAAE-g/36ZozFibiRI/s288/100_1383.JPG
如果相册图片数量不多,手工复制就可以了;但是如果相册内有数百张图片,手工复制这些地址非常消耗时间。为了用SAS程序来从原始的HTML源代码中读取出我们需要的图片地址列表,先将HTML源代码保存成一个文本文件picasa.txt,我是保存在这个目录下:D:\0docs\My SAS Files\9.1\forcode\
这是picasaweb相册内一张图片的html源代码:
<div class="lhcl_thumb_row">
<div class="lhcl_thumb_captionbox"></div>
</div>
<div style="Z-INDEX: 67" onmouseout="_d('thumbHover', this, 1, false)" onmouseover="_d('thumbHover', this, 1, true)"
onclick="_d('thumbClick', this, 1);" ondblclick="return false;" class="lhcl_thumbnail">
<div style="WIDTH: 298px; HEIGHT: 226px" id="lhid_t1" class="lhcl_thumb_row">
<div style="WIDTH: 288px; HEIGHT: 216px" id="lhid_b1" class="lhcl_greybox">
<img src="http://lh5.ggpht.com/wufeng1211/SFDDqEBgEdI/AAAAAAAAE-g/36ZozFibiRI/s288/100_1383.JPG" style=
"WIDTH: 288px; HEIGHT: 216px" height="216px" width="288px" />
</div>
</div>
4、然后,forcode写了一个SAS小程序来从这个HTML源代码文件读取出图片地址列表:
data picasa;
infile "D:\0docs\My SAS Files\9.1\forcode\picasa.txt";
input @'<img src="' imageurl :$90.;
proc print data=picasa noobs;
run;
这个程序中最关键的就是变量读取语句:input @'<img src="' imageurl :$90.;这表示从picasa.txt这个文件第一行开始,每当遇到<img src="这样的代码,就开始读取变量imageurl的一个值,读取长度最大为90,类型为字符型。为什么设为90?因为forcode数了一下,google picasaweb相册缩略图地址的长度一般不超过90,而且每一张缩略图的长度都相同。下面这个图片地址的字符长度为85,其中wufeng1211是我的picasa相册用户名,长度为10,这个用户名有长有短,不过一般人的用户名也不会超过15个字符吧,如果你的用户名特别长可以将90改大一点。
http://lh5.ggpht.com/wufeng1211/SFDDqEBgEdI/AAAAAAAAE-g/36ZozFibiRI/s288/100_1383.JPG
5、运行上面的程序,就得到了图片地址列表,复制到记事本中,将http替换成<img src=http,将jpg"替换成jpg><br>,然后查找替换s288为s512就得到了宽度为512像素的图片列表HTML源文件,保存成htm格式,用浏览器打开就得到了宽度为512像素的图片列表。
--
未来新技术和新趋势的种种可能:奇想录 http://www.qixianglu.cn
订阅 http://feed.feedsky.com/woodphone 奇想录作者QQ群:50108840
欢迎读者们给奇想录投稿赚取稿费:http://www.qixianglu.cn/tougao
奇想录读者讨论区-奇想家园:http://www.douban.com/group/forcode
读者QQ群1号:11564958 读者QQ群2号:61921847 读者QQ群3号:61921931