forcode想看的


forcode看过的


新技术
新趋势
奇思妙想
科学探索
科幻奇幻
资料搜集
网络研究
统计定量
社会学研究
书摘读后感
数码网络
软件评测
数据指标
实用信息
有趣的东西
房地产
网络赚钱
投资创业
新闻评论
网站经营
电影八卦
美景美人
人物朋友
情感回忆梦
forcode生活

2008-06-13

用SAS提取picasa相册缩略图源代码中的图片URL列表(组图)

forcode:学习编程还是挺有用的,DIY一下,给工作生活带来了很多方便。前段时间实习,也自学了一下SAS,刚刚操练了一下这个小小的数据读取功能。

我使用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(&#39;thumbHover&#39;, this, 1, false)" onmouseover="_d(&#39;thumbHover&#39;, this, 1, true)"
onclick="_d(&#39;thumbClick&#39;, 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