利用wget 抓取 网站网页 包括css背景图片
2017-03-17 13:26
453 查看
利用wget 抓取 网站网页 包括css背景图片
wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有。不过用它来dump比较现代的网站会有一个问题:不支持css文件,它不会自动下载、重新链接css中所指定的图片。这个问题导致的最常见的后果是dump下来的网站看不到背景图片。本文所介绍的这个脚本主要就是用来解决这个缺陷的。
这里简要介绍一下这个脚本的细节:
第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中的链接。
以下是这个脚本的内容
#!/bin/sh
ADDR="http://www.EXAMPLE.com/"
SERVER=${ADDR#http://}
SERVER=${SERVER%%/*}
wget /
--html-extension /
--restrict-file-names=windows /
--convert-links /
--page-requisites /
--execute robots=off /
--mirror /
--exclude-directories /comment/reply/,/aggregator/,/user/ /
--reject "aggregator*" /
"$ADDR"
find $SERVER -type f -name "*.css" -exec cat {} /; |
grep -o 'url(/[^)]*)' |
sort |
uniq |
sed 's/^url(/(.*/))$/http:////'$SERVER'/1/' |
wget --mirror --page-requisites -i -
for i in `find $SERVER -type f -name "*.css"`; do
PREFIX="$(echo $i | sed 's/[^//]*//g; s///$//; s////../////g')"
sed -i 's/url(///url('$PREFIX'/g' $i
done
wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有。不过用它来dump比较现代的网站会有一个问题:不支持css文件,它不会自动下载、重新链接css中所指定的图片。这个问题导致的最常见的后果是dump下来的网站看不到背景图片。本文所介绍的这个脚本主要就是用来解决这个缺陷的。
这里简要介绍一下这个脚本的细节:
第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中的链接。
以下是这个脚本的内容
#!/bin/sh
ADDR="http://www.EXAMPLE.com/"
SERVER=${ADDR#http://}
SERVER=${SERVER%%/*}
wget /
--html-extension /
--restrict-file-names=windows /
--convert-links /
--page-requisites /
--execute robots=off /
--mirror /
--exclude-directories /comment/reply/,/aggregator/,/user/ /
--reject "aggregator*" /
"$ADDR"
find $SERVER -type f -name "*.css" -exec cat {} /; |
grep -o 'url(/[^)]*)' |
sort |
uniq |
sed 's/^url(/(.*/))$/http:////'$SERVER'/1/' |
wget --mirror --page-requisites -i -
for i in `find $SERVER -type f -name "*.css"`; do
PREFIX="$(echo $i | sed 's/[^//]*//g; s///$//; s////../////g')"
sed -i 's/url(///url('$PREFIX'/g' $i
done
相关文章推荐
- 利用wget 抓取 网站网页 包括css背景图片
- JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片
- 详解JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片
- JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片
- 网站CSS背景图片抓取工具
- JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片
- 网页设计中利用CSS实现背景图片平铺的技巧
- 网页上有些图片的src或css背景图片的url后面跟了一大串字符 data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAA
- CSS实例:利用CSS定位背景图片
- CSS实例:利用CSS定位背景图片
- python完成网页下载(包括图片和css)
- 20个真棒的jquery和css打造的图片动画效果(网站背景随时变换,广告牌效果..)
- PHP抓取网站页面、CSS文件、图片
- 利用css背景图片定位
- 利用css来截取大背景图片
- CSS网页制作技巧:背景图片定位 显示切图的一部分作为背景显示
- css 网页背景图片 怎样用CSS实现大背景网页效果
- 实用的网页背景图片拉伸css(总结4种)
- CSS网页设计:百分比进行背景图片定位
- CSS实例:利用CSS定位背景图片