[实践OK]linux wget 抓取整个网站网页包括css背景图片,对一些前端做了不让打开F12的JS提示文件搜索,PHP wget 获取文件

jackxiang 2011-9-1 23:06 | |

-r, –recursive(递归) specify recursive download.(指定递归下载)
-k, –convert-links(转换链接) make links in downloaded HTML point to local files.(将下载的 HTML 页面中的链接转换为相对链接即本地链接)
-p, –page-requisites(页面必需元素) get all images, etc. needed to display HTML page.(下载所有的图片等页面显示所需的内容)
-np, –no-parent(不追溯至父级) don’t ascend to the parent directory.
另外断点续传用 - nc 参数 日志 用 - o 参数
http://www.mokeyjay.com/archives/959

整站下载后用grep 实现找JS提示文案,定位JS文件名称:



示例用wget下载整个目录包括图片和CSS&HTML:
root@116.255.139.240:/home/admin/wget#
wget -r -x  http://c.jackxiang.com/login/index.html?url=http://bbs.jackxiang.com/passport.php
查看下载情况:
root@116.255.139.240:/home/admin/wget/c.jackxiang.com/login# ls
css  images  index.html?url=http:%2F%2Fbbs.jackxiang.com%2Fpassport.php


wget 是一个命令行的下载文件工具,它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。Linux用户经常需要使用它。下此介绍几个wget使用的技巧。
wget技巧大全:
1>下载 http://www.linux.com 网站上 packs 目录中的所有文件
$ wget -r -np -nd http://www.linux.com/packs/
-np 的作用是不遍历父目录
-nd 表示不在本机重新创建目录结构。
2>下载整个http或者ftp站点
$ wget -r -x http://www.linux.com
-x  的作用强制建立服务器上一模一样的目录
这个命令会按照递归的下载服务器上所有的目录和文件,就是下载整个网站。在下载的时候,被下载网站指向的所有地址都会被下载,如果这个网站引用了其他网站,被引用的网站也会被下载下来!!!
注意: 可以用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2。
如: wget -r -x -l 2 http://www.linux.com
3>wget选择性的只下载某类文件
$ wget -r -np -nd –accept=iso http://www.linux.com/i386/
–accept=iso 选项,这指示wget仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。
4>批量下载
wget -i downloads.txt
如果有多个文件需要下载,那么把所有需要下载文件的地址放到downloads.txt中(每个文件的URL写一行),然后 wget 就会自动为你下载所有文件了。
5>断点续传
$ wget -c -t 100 -T 120 http://www.linux.com/big-file.iso
当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的。
-c 选项的作用为断点续传。
-t 参数表示重试次数(例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。)
-T 参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。
6>镜像一个网站
$ wget -m -k (-H) http://www.linux.com/
如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。

在php中,wget还是用到的比较多的,因为有时候会抓一下资源或者图片等等,
这个时候file_get_contents就不大好用了,而且wget可以设置抓取的次数,时间等等,
这些都是file_get_contents所不具备的,
wget是shell命令,php如果想要调用直接用exec()函数就好了。 exec("wget -i xxxxx xxxxx");

脚本实现:
============================================================
介绍一下这个脚本的细节:
第3行用于设置要下载的网站的地址。
第10行用于将文件名转换为windows兼容的格式。windows对文件名格式的要求比unix更为苛刻一点,这里指定为windows也可以兼容unix系统。总的来说,wget的这个功能稍微弱了一点,面对一些更苛刻的系统就没有办法了。
第13行用于忽略robots.txt。很多网站的css、js文件都是在robots.txt中被定义为spider不可访问的。
第15、16行用于忽略某些目录和文件。因为没有了robots.txt的限制,wget可能会去访问一些不需要的东西。这里可以根据具体情况做限制。
第19~24行下载css中链接的文件。
第26~29行修正css中的链接。




参考:http://www.wduw.com/read.php?110
        http://www.wduw.com/read.php?110
        http://blog.csdn.net/jianglei421/article/details/6547826

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/4593/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2021-8-13 23:56
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]