mac 静态html部署,在Mac OS X上构建wget来抓取静态网站内容

我们的目标是在Mac OS上获取一个静态服务器的内容,通常用wget是一个很好的选择。

wget是一个命令行工具用于从网络服务器来获取内容。但是在Mac OS X(Mountain Lion/ Mavericks / Snow Leopard)上没有提供该工具,但是有curl。

wget VS curl

curl

基于跨平台的库libcurl

支持unix管道

返回错误代码来支持错误处理

只返回单个url的内容,不支持自动取链接的内容

大量协议支持诸如 :FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP and RTSP

可移植性好

支持不同的SSL/TSL库

支持HTTP认证(HTTP Authentication)

支持双向和多部分提交数据

支持压缩

MIT协议

wget

只支持命令行

支持递归的抓取数据,也就是说可以抓取返回内容中的url链接的内容。

非常古老,开发不活跃。

使用HTTP 1.0

GNU项目的一部分

GPL 协议

总体而言curl比wget要进步许多,可是要获取一个网站的镜像,迭代功能必不可少。只好自己动手,在Mac上构建一个wget。

构建wget

首先确定你已经安装了Xcode和GCC,如果不知道如何安装,可以参考这个链接。

然后从gnu下载wget的源码

curl -O http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz

下载好后,解压缩

tar -xvf wget-1.15.tar.gz

解压缩好后,需要运行配置命令,为编译做准备

cd wget-1.15

./configure --with-ssl=openssl

这里我们选用openssl作为ssl的参数选项。大家一定不会忘记最近发生的openssl的heartbleed漏洞吧 :)

配置好了以后,运行make

make

这里不出意外会跳出一大堆的警告,不要担心,如果你看到如下的内容,你应该编译成功了

... ...

... ...

gcc  -O2 -Wall   -o wget cmpt.o connect.o convert.o cookies.o ftp.o css_.o css-url.o ftp-basic.o ftp-ls.o hash.o host.o html-parse.o html-url.o http.o init.o log.o main.o netrc.o progress.o ptimer.o recur.o res.o retr.o spider.o url.o warc.o utils.o exits.o build_info.o  version.o ftp-opie.o openssl.o http-ntlm.o ../lib/libgnu.a -liconv  -lssl -lcrypto -lz -ldl -lz -lz

Making all in doc

./texi2pod.pl -D VERSION="1.15" ./wget.texi wget.pod

/usr/bin/pod2man --center="GNU Wget" --release="GNU Wget 1.14" wget.pod > wget.1

Making all in po

Making all in tests

make[2]: Nothing to be done for `all'.

Making all in util

make[2]: Nothing to be done for `all'.

make[2]: Nothing to be done for `all-am'.

最后,安装

sudo make install

安装成功后,试一试wget是否成功安装

$ which wget

/usr/local/bin/wget

如果看到上述结果说明wget已经成功构建并部署到/usr/local/bin目录了

好了,万事具备,可以开始抓取你想要获得内容的网站了。

wget -mk http://website.com

其中-m参数表示迭代的抓取,-k参数表示用相对路径取代绝对路径。抓取的内容会被存放在本地的website.com的目录下。

举个例子,比如我要抓新浪新闻

$ wget -mk http://news.sina.com.cn

--2014-06-30 16:55:26--  http://news.sina.com.cn/

Resolving news.sina.com.cn... 58.63.236.31, 58.63.236.46, 58.63.236.48, ...

Connecting to news.sina.com.cn|58.63.236.31|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 636992 (622K) [text/html]

Saving to: ‘news.sina.com.cn/index.html’

100%[======================================>] 636,992      391KB/s   in 1.6s

2014-06-30 16:55:29 (391 KB/s) - ‘news.sina.com.cn/index.html’ saved [636992/636992]

Loading robots.txt; please ignore errors.

--2014-06-30 16:55:29--  http://news.sina.com.cn/robots.txt

Reusing existing connection to news.sina.com.cn:80.

HTTP request sent, awaiting response... 200 OK

Length: 70 [text/plain]

Saving to: ‘news.sina.com.cn/robots.txt’

100%[======================================>] 70          --.-K/s   in 0.03s

2014-06-30 16:55:29 (2.54 KB/s) - ‘news.sina.com.cn/robots.txt’ saved [70/70]

--2014-06-30 16:55:29--  http://news.sina.com.cn/js/792/2012-08-09/41/headnews.js

Reusing existing connection to news.sina.com.cn:80.

HTTP request sent, awaiting response... 200 OK

Length: 31699 (31K) [application/x-javascript]

Saving to: ‘news.sina.com.cn/js/792/2012-08-09/41/headnews.js’

100%[======================================>] 31,699      --.-K/s   in 0.04s

2014-06-30 16:55:29 (731 KB/s) - ‘news.sina.com.cn/js/792/2012-08-09/41/headnews.js’ saved [31699/31699]

--2014-06-30 16:55:29--  http://news.sina.com.cn/pfpnews/js/libweb.js

Reusing existing connection to news.sina.com.cn:80.

HTTP request sent, awaiting response... 200 OK

Length: 6554 (6.4K) [application/x-javascript]

Saving to: ‘news.sina.com.cn/pfpnews/js/libweb.js’

100%[======================================>] 6,554       --.-K/s   in 0.03s

抓成功后的目录如下

a3bc05add48f01f6d7bc266111e7abe3.png

注意:

这样的方式仅适用于静态网站,对于使用动态代码生成的网站无能为力

地址转换是发生在所有内容抓取完成之后,如果你中途退出,则所有的地址链接仍然指向原始地址。当你所要抓取的内容巨大时,需要非常小心。

为了防止流量过大,对服务器造成太大的负担,可以使用-w参数设置两个请求中的间隔时间

使用Brew

另外一个很有效地方法是使用homebrew,homebrew是一个包管理工具。安装非常简单:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安好了以后,运行

$ brew install wget

就好了,非常方便

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值