批量下载图片

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
qof3990
帖子: 20
注册时间: 2012-11-28 9:07
系统: 12.04+win7

批量下载图片

#1

帖子 qof3990 » 2012-12-03 20:52

一开始想的很简单,火狐的插件应该很简单的搞定,但是错了,该系统下没有发现支持递归下载的插件。
打算用wget扒,发现防扒很普遍。
装了downthemall,可以把链接的网页文件下载下来。然后取出图片地址再用wget下载。其实很简单,用个grep就可以轻松匹配出来。但是我不知道有-o这么个参数啊!搞了一天啊,五六个小时就这么砸下去了。sed和awk通读一遍啊,擦!取个字串太低级怎么着?没一个教程写,全是替换!到现在没搞清这个-o到底是什么来历,grep的每个教程和说明都不写啊!到底是我的搜索关键字有问题,还是搜索引擎的排名有问题,还是vpn没流量了,还是纯粹打开的时机不对啊!!!
好吧我夯一下吧,骂两句败败火。
grep -o -h "http.\{10,100\}jpg" ./*.htm* | wget -i-
o只输出匹配字符 h不显示文件名 10,100防止取的太大,-i-下载在FILE文件中出现的URLs,i后面的杠表示从标准输入中获得文件。
继续研究怎么能递归下载链接,哼!

三楼用pl脚本怎么搞,不懂,有空去学学。不过wget递归下载已经搞通了。把http请求发送的各种头文件cookie什么的写全就好了。研究http的协议,再理解一下浏览器的工作原理就好了。

为了让preg非贪婪,用sed搞了一下,这样虽然比\{10,100\}长了点,不过适应性更好了:
grep -Po -h "http.*?jpg" ./* |sed "s/http.*http/http/" |wget -i-
是不是可以直接用sed解决嫩?再想想。
上次由 qof3990 在 2012-12-05 9:51,总共编辑 5 次。
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

Re: 批量下载图片

#2

帖子 yjcong » 2012-12-03 21:07

给个目标网址
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 批量下载图片

#3

帖子 eexpress » 2012-12-03 21:07

fetch-link.pl
爬虫,历来是pl容易搞。
● 鸣学
回复