【发布时间】:2012-03-05 03:06:25
【问题描述】:
我正在寻找有关抓取和下载整个公司网站的程序的建议。
该网站由已停止工作的 CMS 提供支持,修复它的成本很高,我们能够重新开发该网站。
所以我想将整个网站作为纯 html / css / 图片内容,并根据需要对其进行小幅更新,直到新网站出现。
有什么推荐吗?
【问题讨论】:
标签: html web-scraping
我正在寻找有关抓取和下载整个公司网站的程序的建议。
该网站由已停止工作的 CMS 提供支持,修复它的成本很高,我们能够重新开发该网站。
所以我想将整个网站作为纯 html / css / 图片内容,并根据需要对其进行小幅更新,直到新网站出现。
有什么推荐吗?
【问题讨论】:
标签: html web-scraping
wget \
--recursive \
--no-clobber \
--page-requisites \
--html-extension \
--convert-links \
--restrict-file-names=windows \
--domains www.website.com \
--no-parent \
www.website.com
阅读更多相关信息here。
【讨论】:
convert-links 和 no-clobber 一起使用。在这种情况下,它将忽略no-clobber。
--domains 是否应该与要抓取的站点名称具有相同的参数(在这种情况下是 website.com,而不是 .org)?
我知道这太老了,我只想把我的 2 美分放进去。
wget -m -k -K -E -l 7 -t 6 -w 5 http://www.website.com
关于每个开关的一点说明:
-m 本质上,这意味着“镜像站点”,它在爬取站点时递归地抓取页面和图像。它会检查时间戳,因此如果您使用此开关第二次运行 wget,它只会更新比上次更新的文件/页面。
-k 这将修改 html 中的链接以指向本地文件。如果不是使用 page2.html 之类的东西作为整个站点的链接,您实际上使用的是完整的 http://www.website.com/page2.html,您可能需要/想要这个。为了安全起见,我打开它 - 否则至少有 1 个链接会导致问题。
-K 上面的选项(小写 k)编辑 html。如果您还想要“未修改”版本,请使用此开关,它将保存更改后的版本和原始版本。这只是一个很好的做法,以防出现问题并且您想比较两个版本。您以后可以随时删除不想要的。
-E 这会使用“适当的扩展”保存 HTML 和 CSS。小心这个 - 如果您的网站没有在每个页面上都有 .html 扩展名,这将添加它。但是,如果您的网站已经将每个文件都以“.htm”之类的名称命名,那么您现在将以“.htm.html”结尾。
-l 7 默认情况下,我们上面使用的 -m 将递归/蜘蛛遍历整个站点。通常没关系。但有时您的网站会出现无限循环,在这种情况下 wget 将永远下载。想想典型的website.com/products/jellybeans/sort-by-/name/price/name/price/name/price 示例。现在有点少见了——大多数网站表现良好并且不会这样做,但为了安全起见,请计算出从主页到达任何真实页面所需的最多点击次数,pad一点点(如果您使用 7 的值并在一小时后发现您的站点有 8 层深度,那就太糟糕了!)并使用 #.当然,如果您知道您的网站具有可以正常运行的结构,那么忽略这一点并放心地知道您网站上 50 层深的 1 个隐藏页面实际上已被发现,这并没有错。
-t 6 如果尝试访问/下载某个页面或文件失败,这将设置在放弃该文件并继续之前的重试次数。您通常确实希望它最终放弃(如果您希望它永远尝试,请将其设置为 0),但您也不希望它放弃,如果该网站只是不稳定第二或第二。我觉得 6 是合理的。
-w 5 这告诉 wget 在抓取下一个文件之前等待几秒钟(在这种情况下为 5 秒钟)。在这里使用某些东西通常很关键(至少 1 秒)。让我解释。默认情况下,wget 将尽可能快地抓取页面。这很可能是每秒多个请求,这可能会给服务器带来巨大的负载(特别是如果该站点是用 PHP 编写的,对每个请求进行 MySQL 访问,并且不使用缓存)。如果该网站是在共享主机上,那么这种负载可能会让某人离开他们的主机。即使在 VPS 上,它也可以让一些网站瘫痪。即使网站本身幸存下来,在几秒钟内被大量请求轰炸也可能看起来像是 DOS 攻击,很可能会自动阻止您的 IP。如果您不确定该站点是否可以处理大量涌入的流量,请使用 -w # 开关。5 通常非常安全。在大多数情况下,即使是 1 也可能没问题。但是使用一些东西。
【讨论】:
以上都没有完全满足我的需要(整个网站和所有资产)。这虽然有效。
首先,按照this 教程在 OSX 上获取 wget。
然后运行这个
wget --recursive --html-extension --page-requisites --convert-links http://website.com
【讨论】:
按照@Abhijeet Rastogi 的回答中的建议,最好的方法是用wget 刮掉它。如果您不熟悉 is 然后 Blackwidow 是一个不错的刮刀。我过去用过它。 http://www.sbl.net/
【讨论】:
考虑HTTrack。这是一个免费且易于使用的离线浏览器实用程序。
它允许您从 Internet 将万维网站点下载到本地目录,递归地构建所有目录,将 HTML、图像和其他文件从服务器获取到您的计算机。
【讨论】: