【问题标题】:How do I download a web page into a single file from a specified URL?如何从指定的 URL 将网页下载到单个文件中?
【发布时间】:2013-05-09 19:17:10
【问题描述】:

我正在尝试抓取网页。

我想通过提供其 URL 来下载网页,并将其保存以供离线阅读其所有图像。我无法用 wget 做到这一点,因为它创建了许多目录。

这可以用 wget 吗?是否有类似 FireFox 中的“另存为”选项的东西,它创建一个目录并将所有需要的资源放入一个 HTML 页面中?

是否可以这样做 Nokogiri 或机械化?

【问题讨论】:

  • 这个 SO 线程可能会帮助您入门:stackoverflow.com/questions/4217223/…
  • 谢谢,但没有说明如何下载图片。即使没有互联网连接,我也想下载带有图片的页面以供阅读。
  • 当然可以使用 Nokogiri 和其他几个 gem,比如 Open::URI 或 Net::HTTP,但是你必须编写代码告诉他们要做什么,因为他们不自己做。更大的技巧是重写 HTML 页面以从您的磁盘而不是远程站点加载所有资源。
  • entrenchant.blogspot.com/2012/02/… 有用于此目的的代码。

标签: ruby nokogiri mechanize wget


【解决方案1】:

您可以使用wget 来执行此操作并在您的 ruby​​ 脚本中运行它。

这里的示例将撕掉我网站的主页,skrimp.ly,并将内容放入名为“download”的单个目录中。一切都将在顶层,嵌入在 HTML 中的链接将被重写为本地:

wget -E -H -k -K -p -nH -nd -Pdownload -e robots=off http://skrimp.ly

注意:您应该查看 wget 的一些文档。它可以做一些非常疯狂的事情,比如下降多个级别。如果你这样做,请小心——它在网络服务器上可能非常繁重,并且在某些情况下会花费网站管理员很多 $$$$$。

http://www.gnu.org/software/wget/manual/html_node/Advanced-Usage.html#Advanced-Usage

【讨论】:

  • 我试过这个命令。当我断开与 Internet 的连接并尝试打开下载的 shtml 时,图像被重新加载。所以我这样做了: wget -p --convert-links -nH -nd -Pdownloads bbc.co.uk/persian/world/2013/05/… 它创建包含三个文件的“下载”目录:1 -html 文件,2-bump?emp=worldwide,3-robots.txt
  • 太棒了!如果您最终使用它,请选择我的答案。谢谢!
【解决方案2】:

铁皮人给出的答案起到了作用。 This 展示了如何使用 Nokogiri 下载带有图片的单页以供离线阅读,目录结构非常干净。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多