当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [原创]自己写的一个在北邮人论坛贴图秀版里边抓图的脚本,还不是很完善;-)
帖子发表于 : 2007-05-20 17:47 

注册: 2007-03-11 17:48
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
恩,最近突然有了一种看法:
觉得既然学习linux,就不能天天去升级了,装一些不中用的图形界面软件了,搞什么beryl了,当然这些也是可以在轻松之余去弄弄的,但决不是每天一开电脑就去做,以为一段时间之后,你会发现自己面对电脑屏幕不知道该干什么了……
我发现linux最强大的还是她的命令行,还是那些经典的软件,就像各类的ftp客户端,我估计高手们肯定会认同lftp是无可替代的,不论是链接速度,功能各方面都相当强大,并且对中文的转换也很透明的。
还有我发现shell也是很强大的,她可以让你去做你想做的事情,去满足你的各种怪异的想法,等到我最近去学习的时候,才发现这是一个各大强人一展身手的地方,因为你可以用更简单的方法去做,大家也会很乐意帮助新手。
说了一些废话,呵呵,偏离主题了,不过上边这些算是我写这个脚本的原因吧;-)

大概介绍一下这个脚本:
其实说白了,就是去分析网页,呵呵,把图片的地址找到就OK了
我把网页地址集中到一个html里边,默认使用firefox来查看,你可以改用你自己喜欢的浏览器。

代码:
  1 #!/bin/bash
  2 
  3 # 恩,对以前的版本的改进,使得可以更人性化一点,毕竟复制链接也是一件很麻烦的事:(
  4 # 可以显示第一页的标题,然后供选择,呵呵
  5 # 版本: 0.0.2
  6 # 日期: 2007年5月20日
  7 # 作者: stufever
  8 # 背景: byr上贴图秀里边的东东
  9 
 10 picture_board_url="http://forum.byr.edu.cn/wForum/board.php?name=Picture"
 11 
 12 wget -q $picture_board_url -O ttx
 13 
 14 # 把贴图秀版面上所有帖子的ID和名字过滤出来
 15 cat ttx | grep "origin"  | sed -e 's/(/\,/g' | sed -e 's/=/\,/g' | awk -F ',' '{print $3}' > dir_list
 16 rm ttx
 17 
 18 iconv -f gbk -t utf-8 dir_list > dir_list_utf
 19 rm dir_list
 20 
 21 # 本来这个地方是想把dir_list_utf里边的帖子名字输出出来的,但是因为要加上行号,我就想不出来该怎么办了
 22 # 恩,去论坛求助 http://forum.ubuntu.org.cn/viewtopic.php?p=304135#304135 要谢谢ziyun laborer兄!
 23 
 24 while true
 25 do
 26     sed -n 'n;p' dir_list_utf | nl
 27 
 28     echo ""
 29     echo -n "Some interested ? Input the number(n), or quit(q): "
 30     read c
 31     if [ $c = 'q' ] ; then
 32         echo "bye..."
 33         exit 1
 34     fi
 35 # 利用了dir_list_utf的特点,一行ID一行帖子名
 36     let c=2*${c}-1
 37     number=`sed -n "${c}p" dir_list_utf`
 38     ((c++))
 39     name=`sed -n "${c}p" dir_list_utf | sed -e "s/'/:/g"  | awk -F ":" '{print $2}'`
 40     echo $name
 41 
 42     tzurl="http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Picture&ID=$number"
 43     baseurl="http://forum.byr.edu.cn/wForum/"
 44 
 45     echo "Begining..."
 46     wget -q $tzurl -O tz_wz
 47 
 48 # 这个地方要注释一下,要不就再也想不起来了;-)
 49 # "bid"的行里边有所有图片的信息,好像就是一个帖子吧;里边可能有不止一个图片,所以把它们变成多个行;
 50 # 然后把没用的行给过滤掉;之后的awk,就可以把有用的东西提取出来了;后边这个sed我也有点不解,因为awk之后,只剩一行了;
 51 # 后边的就是把网址变成需要的形式,pic_bottom里边就放着了该图片链接的后半部分
 52     cat tz_wz | grep "bid" | sed -e 's/<a href=/&\n/g' | grep "bbscon" |  awk -F '"' '{printf $2'\n'}' | sed -e 's/bbscon    /\nbbscon/g' | sed 1d | sed -e 's/&amp;/\&/g' > pic_bottom
 53 
 54 # 把最后所有图片的网址放到一个html里边,这个地方可以改进,但是对html几乎不了解,就这样了
 55     for i in `sed -e '' pic_bottom`
 56     do
 57         echo "<img src="$baseurl$i"><br>" >> "$HOME/$name.html"
 58     done
 59 
 60     firefox "$HOME/$name.html"
 61     rm tz_wz  pic_bottom
 62     echo "If you like it, At firefox File-->Save as :)"
 63     rm "$HOME/$name.html"
 64 
 65     echo "done..."
 66 
 67 done
 68 rm dir_list_utf



附件:
文件注释: 脚本文件
perfect_catch_picture.sh.bz2 [1.53 KiB]
被下载 52 次


最后由 stufever 编辑于 2007-05-20 19:38,总共编辑了 1 次
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-05-20 19:03 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
针对网站解析地址是可以的。只是这网站好吗?我看是慢死了的。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-05-20 19:37 

注册: 2007-03-11 17:48
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
针对网站解析地址是可以的。只是这网站好吗?我看是慢死了的。


哦,这是我们学校论坛,呵呵,可能对外比较慢吧,教育网还行!


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-06-02 20:31 

注册: 2007-03-01 15:22
帖子: 22
地址: 广州
送出感谢: 0 次
接收感谢: 0 次
赞一下楼主,顺便请高手指点我写的自动从百度搜索并下载壁纸的脚本。

wp.sh
代码:
#/bin/bash

if [ $# -ne 3  ] ; then
   echo "Usage:   `basename $0` THE_STUFF_TO_DOWNLOAD FROM TO"
   exit 1
fi

STUFF=`echo $1 | iconv -f utf8 -t gbk`

url4down1="http://image.baidu.com/i?ct=503316480\&z=5\&tn=|\
baiduimagedetai\&word=${STUFF}\&in="
url4down2="\&cl=2\&cm=1\&sc=0\&lm=-1\&pn="
url4down3="\&rn=1"

:>list

for ((  p = $2; p < $3; p++ )) ;  do
   ((  i = p + 1 ))
   url4down=${url4down1}${i}${url4down2}${p}${url4down3}
   realurl=`lynx -source -connect_timeout=100 $url4down |\
   iconv -f gbk -t utf8 -c | grep "_top" |\
   sed -e 's/    //g' -e 's/<a href.[^>]*>//g' |\
   sed -e 's/<img src=\"//g' -e 's/".*//g'`
   name=`echo $realurl | sed -e 's/http.*\///g'`
   echo "Downloading picture $i"
   echo $realurl >> list
   if [ -e ${name} ] ; then
      echo "Picture has been downloaded. Ingore it."
   else   
      wget -c -t 3 -T 60 "${realurl}"
   fi
done


忘了,要安装lynx。sudo apt-get install lynx 当时觉得比wget快。。

$./wp.sh 美女 0 20
:P :P


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-06-05 21:03 

注册: 2007-03-11 17:48
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
呵呵,如果改名为baidu_mm可能会更吸引人


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-06-05 21:14 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
恩,不错,哈哈!linux就该这么用.


_________________
关注我的blog: ε==3


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译