刮整个网站

时间:2012-02-13 17:38:05

标签: html web-scraping

我正在寻找一个程序来提取和下载整个公司网站的建议。

该网站由已停止工作的CMS提供支持并且修复它的费用很高,我们可以重新开发网站。

所以我想将整个网站视为简单的html / css / image内容,并根据需要对其进行细微更新,直到新网站出现为止。

任何推荐?

5 个答案:

答案 0 :(得分:56)

wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains website.org \
     --no-parent \
         www.website.com

详细了解here

答案 1 :(得分:32)

上述所有内容都不是我所需要的(整个网站和所有资产)。这虽然有效。

首先,按照this教程获取OSX上的wget。

然后运行

wget --recursive --html-extension --page-requisites --convert-links http://website.com

答案 2 :(得分:24)

我知道这是超级老,我只是想把我的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,那么您可能需要/想要这个。我打开它只是为了安全起见 - 否则至少有一个链接会导致问题。

-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示例。现在这种情况有点罕见 - 大多数网站表现都很好而且不会这样做,但为了安全起见,找出从主页到达网站上任何真实页面所需的最多点击次数,填充它有点(如果你使用7的值并且一小时后发现你的网站是8级深度就会很糟糕!)然后使用#。当然,如果您知道您的网站有一个可以表现的结构,那么省略这一点并且知道您的网站上实际找到了50个级别的隐藏页面是非常有意义的。

-t 6如果尝试访问/下载某个页面或文件失败,则会在放弃该文件并继续之前设置重试次数。你通常希望它最终放弃(如果你想让它永远尝试,把它设置为0),但你也不希望它放弃,如果该网站只是为了一个第二或第二。我发现6是合理的。

-w 5这告诉wget在抓取下一个文件之前等待几秒钟(在这种情况下为5秒)。在这里使用一些东西(至少1秒钟)通常很关键。让我解释。默认情况下,wget会尽可能快地抓取页面。这很容易就是每秒多次请求,这可能会给服务器带来巨大的负担(特别是如果站点是用PHP编写的,那么对每个请求进行MySQL访问,并且不使用缓存)。如果该网站位于共享主机上,则该负载可能会有人从其主机上踢出。即使在VPS上它也可以让一些网站瘫痪。即使网站本身存在,在几秒钟内被疯狂的请求轰炸也可能看起来像DOS攻击,很可能会让你的IP自动被阻止。如果您不确定该站点是否可以处理大量流量,请使用-w#switch.5通常非常安全。大多数时候,即使1也可能是好的。但是要用一些东西。

答案 3 :(得分:23)

考虑HTTrack。它是一个免费且易于使用的离线浏览器实用程序。

  

它允许您从Internet下载万维网站点到本地目录,递归构建所有目录,从服务器获取HTML,图像和其他文件到您的计算机。

答案 4 :(得分:0)

最好的方法是按照@Abhijeet Rastogi的回答中的wget抓取它。如果你不熟悉那么Blackwidow是一个不错的刮刀。我过去曾经用过它。 http://www.sbl.net/