在Mac OS X上构建wget来抓取静态网站内容

Nginx重定向实战:301/302语义、rewrite阶段与return精准控制 HTTP重定向是Web基础设施中最基础也最易误用的机制之一,其核心在于状态码语义(如301永久跳转与302临时跳转)、浏览器缓存行为及服务端执行时机的协同。Nginx作为主流反向代理与边缘网关,通过return、rewrite和proxy_redirect等指令实现跳转控制,但不同指令触发于请求处理的不同阶段——return立即终止流程,rewrite则受location匹配与重写阶段影响,极易引发循环或失效。理解301对SEO权重迁移的影响、302对调试友好性的作用,以及rewrite的post-rewr 阅读详情

我们的目标是在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


抓成功后的目录如下

注意:

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

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

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

使用Brew

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

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


安好了以后,运行

$ brew install wget


就好了,非常方便

mac整站下载工具httrack 和安装wget的方法类似使用homebrew安装 1. 安装    brew install httrack 2. 运行(以下命令行操作) #httrack Welcome to HTTrack Website Copier (Offline Browser) 3.48-21 Copyright (C) 1998-2015 Xavier Roche and other 阅读详情

相关推荐

WebScraper for Mac(网站数据抓取工具)

WebScraper for Mac是为Mac系统而设计的网站数据抓取工具,使用Web Scraper,您可以构建将导航站点并提取数据的站点地图,Scraper还可以提取使用JavaScript动态加载或生成的数据等,使用webscraper mac版可以快速提取与特定网页相关的信息,包括文本内容。 WebScraper Mac软件介绍 WebScraper Mac版是一款Mac平台上通过使用将数据导出为JSON或CSV的简约应用程序,WebScraper Mac版可以快速提取与某个网页(包括文本内容)相

macxingchendahai的博客 984

linux下使用qt静态编译及打包程序完整教程(亲测可用)

概述 linux上qt程序开发好后会遇到一个问题,就是如何将开发好的程序打包成便于安装的安装包,然后发布给客户使用。这个过程总体可以分为两个步骤:编译和打包 1.编译qt程序 方法1: 使用qtcreator直接编译qt程序 方法2: 1)编译qt的静态库 2)使用qt的静态库静态编译qt程序 2.打包编译好的程序 1) 2) 3) ...

weixin_40134955的博客 1万+

网站爬取工具,可爬网站静态的HTML

网站爬取工具,可爬网站静态的HTML

MAC上的爬虫软件怎么选?看完这篇就够了

在上一篇文章:网络爬虫软件哪个好用?中,我们介绍了目前市面上比较成熟好用的网络爬虫软件, 但是其中有些不能在MAC上使用,因此今天这篇文章我们单独介绍一下在MAC操作系统中有哪些好用的爬虫软件,给大家做一个参考。 还是先说结论吧,赶时间的同志可以看完就闪人了,有两种选择方案: 1、免费不花钱,不需要积分的 注意:这里说的免费功能包括采集数据、导出各种格式的数...

weixin_30352645的博客 1787

三轴云台稳定控制算法优化实战:从PID到模糊自适应

本文深入探讨了三轴云台稳定控制算法的优化实践,从经典PID控制到模糊自适应算法的进阶应用。通过实战案例和代码示例,详细解析了PID调参技巧、模糊控制实现及多传感器数据融合方法,帮助工程师在复杂环境下提升云台抗干扰能力和响应速度,特别适用于无人机航拍等场景。

green的博客 915

从拆箱到跑通:Intel RealSense D435i开箱实测+ROS驱动配置全流程

本文详细记录了Intel RealSense D435i深度相机的开箱体验,并提供了在Ubuntu 22.04与ROS2 Humble环境下,从安装librealsense2 SDK到配置ROS2驱动的完整流程。重点解决了驱动安装、数据流发布、点云对齐以及IMU数据融合等关键步骤,帮助研究者和开发者快速实现D435i与机器人系统的集成。

weixin_29168393的博客 307

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

我们的目标是在Mac OS上获取一个静态服务器的内容,通常用wget是一个很好的选择。wget是一个命令行工具用于从网络服务器来获取内容。但是在Mac OS X(Mountain Lion/ Mavericks / Snow Leopard)上没有提供该工具,但是有curl。wget VS curlcurl基于跨平台的库libcurl支持unix管道返回错误代码来支持错误处理只返回单个url的内容...

weixin_39600319的博客 428

ABAP BOM展开避坑指南:CS_BOM_EXPL_MAT_V2函数参数配置详解

本文深入解析了SAP ABAP开发中用于物料清单展开的核心函数CS_BOM_EXPL_MAT_V2。针对其复杂的参数配置,如CAPID、STLAN、DATUV和MEHRS,提供了详细的避坑指南和最佳实践,帮助开发者避免数据错误与性能陷阱,实现高效、准确的BOM多层展开。

pea55的博客 856

wget: not an http or ftp url_在Mac OS X上构建wget来抓取静态网站内容

我们的目标是在Mac OS上获取一个静态服务器的内容,通常用wget是一个很好的选择。wget是一个命令行工具用于从网络服务器来获取内容。但是在Mac OS X(Mountain Lion/ Mavericks / Snow Leopard)上没有提供该工具,但是有curl。wget VS curlcurl基于跨平台的库libcurl支持unix管道返回错误代码来支持错误处理只返回单个url的内容...

weixin_39734184的博客 765

普罗米修斯监控达梦数据库集群

-----------------------------------新增文件---------------------------------------注:图上即为启动成功,如果没有问题,则使用nohup后台启动程序。官网地址:https://github.com/gy297879328/dameng_exporter。注:prometheus的对数据库的指标采集如果高于60s一次,请手动修改提供表盘中的计算值。修改dameng_exporter.config配置文件,修改账号密码的部分。

weixin_49985403的博客 1685

基于单片机的继电器参数测试系统设计

由于原有测试系统在参数设置上过于单一,在对继电器测试过程中需要多次进行器件连接,导致对其测试准确度下降,会造成继电器的二次损伤,基于单片机研究继电器参数测试系统的设计方法。在硬件设计上,构建二级模式集散控制框架,利用单片机进行数据采集和处理,满足实时继电器参数数据的同步控制;设计双极性反向比例输出电路,分别利用电极电阻对继电器两侧电压进行放大,实现继电器实时电压的检测。实验结果:以两组类型断电器为测试对象,分别连接示波器进行真实数据采集,在本文系统的应用下所得参数测试结果,与真实的数据相一致,具有实际应用效

weixin_45905610的博客 1439

Mac OS X下用 命令行打开网页(command line)

open -a Safari http://stackoverflow.com I know there are several ways in MacOS to open Safari with a given URL from the command line like open -a Safari http://stackoverflow.comOr as an AppleScript ...

weixin_34297704的博客 2160

深入理解 ABAP 中的 Fast Data Access:从 @itab 到 FOR ALL ENTRIES 的性能关键路径

ABAP性能优化的关键在于理解Fast Data Access(FDA)机制,它连接了应用服务器的内表与数据库运算。FDA允许将内表数据推送到数据库进行筛选、聚合等操作,是SELECT...FROM@itab语法的基础。开发者需注意:1)该语法可能在内置引擎或数据库执行;2)仅当SQL能力超出ABAP范围时才建议使用;3)需通过CL_ABAP_DBFEATURES检查数据库支持情况。合理使用FDA可优化批量数据处理,但滥用可能导致性能下降。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1271

使用 Visual Studio 编译 wget 为可执行文件

wget是一个在Linux/Unix下应用十分广泛的下载软件,详细介绍如下:http://www.gnu.org/software/wget/ 前段时间在一个软件更新程序中使用system 函数通过命令行参数调用wget做FTP下载,但是后来增加了需要显示进度的功能,讨论后决定开始阅读wget代码并对其增加下载进度回调。 并将修改后的wget编译成静态库使用。 在此先给出如何使用VS将wge...

weixin_30677073的博客 291

PoE 的三大国际标准:PoE、PoE+、PoE++

很多人知道 PoE 能“一根网线,既供电又传数据”,但鲜少有人能说清楚:PoE 供电到底分几种标准?差别有多大?哪些设备要用 PoE,哪些必须上 PoE+ 或 PoE++?今天,我们就来一次彻底的“拆解”,把 PoE 的三大国际标准——讲得明明白白,顺便也帮你厘清网络工程中的常见“供电疑惑”。

网络技术联盟站 1551

YOLOv8改进,MobileNetV3轻量化架构改进特征提取网络,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3836

mac 扒网站 siteSucker 和 wget

两种方法一、siteSucker appStore里下载siteSucker,然后按图操作,很简单 二、wget命令行 如果没装wget,请参考: http://blog.youkuaiyun.com/abs1004/article/details/76206924wget --mirror -p --convert-links -P [本地路径] [要扒的网址]

武当山道士的博客 6263

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

wget如何爬网页

wget -o /opt/lxk/wget.log -P /opt/lxk//data --no-parent --no-verbose -m -D lixinkuan.blog.youkuaiyun.com -N --convert-links --random-wait -A html,HTML,shtml,SHTML https://lixinkuan.blog.youkuaiyun.com

lixinkuan的博客 1073

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

静态网站抓取之wget

在Linux上最常用的下载工具wget可以轻松完成静态网站的抓取。 命令如下: wget -c -r -npH -k https://jeesite.gitee.io 参数: -c:断点续传 -r:递归下载 -np:递归下载时不搜索上层目录 -nd:递归下载时不创建一层一层的目录,把所有文件下载当前文件夹中 -p:下载网页所需要的所有文件(图片,样式,js文件等) -H:当递归...

617

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

如何扒取整站网页----扒站神器(Mac版跟window版)

        近期想拿别的网站练练布局能力,理论看再多不练手知识点还是不牢固,等真正需要写实际项目时就很难提升效率,仿站就是一个很好的实践项目。问题是怎么能拿到网站具体的字号颜色图片等等静态资源呢?有一个好用的仿站工具可以做到把该网站公开的HTMLCSS代码给扒取出来。Mac版----siteSucker可前往App Store里下载,不过需要30元使用方法参考:https://blog.csd...

qq_38524997的博客 8041

fedora 64位系统下编译安装wget

最近在64位fadora上面编译wget,遇到一些问题,记录下来 依赖的文件列表 1. wget-1.16.tar.gz (其依赖的ssl库,可以使用openssl或者是gnutls) 2. gnutls-3.3.18.tar.xz 3.nettle-2.7.1.tar(gnutls依赖的库,必须) 4.gmp-6.0.0a.tar.bz2(gnutls依赖的库,必须)

kingfs 1052

Linux下的静态编译与动态编译

编译是一个把高级语言写成的代码经过一系列的步骤转换成相应处理器汇编语言的过程。 静态编译 静态编译是指在链接时把函数库整合到目标代码里面,这样做的优点是静态编译完成后就不再需要外部的函数库来支持了,缺点也显而易见,编译后的程序体量会增大很多,并且如果静态函数库改变了,程序需要重新静态编译。 生成静态链接库 静态编译自然不可缺少静态函数库(.a),静态函数库由可重定向文件*.o(也叫目标文件)打包而...

z_ujmn的博客 1367

Mac安装wget(亲测可行)

原文地址:http://blog.youkuaiyun.com/lauraran/article/details/51549629 工作用的Linux的环境,很多时候,不用考虑一些常规命令。由于新近入手的mac,系统和常用的工具都不是很熟悉,所以,只好baidu+google+try了。  最常用的wget  我参照了很多百度上的帖子  结果都卡在./configure 这一步,提示是:

杨春建的博客 2万+
上一篇: 在ipython notebook中调用ggplot的三种不同的方法
下一篇: 用Python做单变量数据集的异常点分析
刚是程序员
博客等级 码龄9年 47粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值