在Mac OS X上构建wget来抓取静态网站内容
来源:互联网 发布:姓名大战 源码 编辑:程序博客网 时间:2024/06/07 00:17
我们的目标是在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的源码
下载好后,解压缩
解压缩好后,需要运行配置命令,为编译做准备
这里我们选用openssl作为ssl的参数选项。大家一定不会忘记最近发生的openssl的heartbleed漏洞吧 :)
配置好了以后,运行make
这里不出意外会跳出一大堆的警告,不要担心,如果你看到如下的内容,你应该编译成功了
最后,安装
安装成功后,试一试wget是否成功安装
如果看到上述结果说明wget已经成功构建并部署到/usr/local/bin目录了
好了,万事具备,可以开始抓取你想要获得内容的网站了。
其中-m参数表示迭代的抓取,-k参数表示用相对路径取代绝对路径。抓取的内容会被存放在本地的website.com的目录下。
举个例子,比如我要抓新浪新闻
抓成功后的目录如下
注意:
这样的方式仅适用于静态网站,对于使用动态代码生成的网站无能为力
地址转换是发生在所有内容抓取完成之后,如果你中途退出,则所有的地址链接仍然指向原始地址。当你所要抓取的内容巨大时,需要非常小心。
为了防止流量过大,对服务器造成太大的负担,可以使用-w参数设置两个请求中的间隔时间
使用Brew
另外一个很有效地方法是使用homebrew,homebrew是一个包管理工具。安装非常简单:
安好了以后,运行
就好了,非常方便
- 在Mac OS X上构建wget来抓取静态网站内容
- Mac OS X 上安装wget工具
- 在Mac OS上安装wget
- 在mac os x 上安装apache2
- 在Mac OS X上安装Git
- 在Mac OS X上安装PostgreSQL
- 在Mac OS X上安装TensorFlow
- 在Mac OS X上安装Python
- 在 Mac OS X 上安装 TensorFlow
- 在 Mac OS X 上安装 TensorFlow
- mac os x 之通过远程主机在nginx上部署web静态页面
- 在Mac OS X上安装 dnsmasq 来搭建DNS服务器
- Mac OS X: XAMP在Mac上的实现
- 在Mac OS中安装 wget
- 如何在Mac OS中安装 wget
- 在Mac OS中安装 wget
- 在Mac OS X上的XAMPP上安装PHPUnit
- Project Matisse:在 Mac OS X 上开发 GUI
- Java NIO内存映射---上G大文件处理
- 简单的升降排序与冒泡排序
- .Net2.0实现扩展方法
- zookeeper常用的特性与使用场景
- jpa学习和jpa与spring整合(一)
- 在Mac OS X上构建wget来抓取静态网站内容
- 将二叉树调整成大根堆,之后排序
- C语言中Static和Const关键字的的作用
- serlvet实现简单的伪流传输推送视频网站
- iOS self 和 super区别以及为什么要self = [super init];
- java中数组的用法
- centos7下iptables防火墙的使用
- SQL文件写入MySQL问题
- SSM综合配置文件【注解】