【问题标题】:wget download a section of a websitewget 下载网站的一部分
【发布时间】:2017-11-10 16:03:26
【问题描述】:

我想下载网站的特定部分。我正在关注这个wget - Download a sub directory。但问题是该网站的部分没有任何特定的网址,即网址像这样http://grephysics.net/ans/0177/*,其中*是1-100的数字,我不能在wget中使用http://grephysics.net/ans/0177。如何下载这 100 个网页并相互链接(即“上一个”和“下一个”按钮应链接到本地​​副本)

【问题讨论】:

  • 让我们备份一下。我想我假设你在 linux 上使用 bash 或类似的东西。你用什么shell来运行你的wget
  • 您还需要回答这个问题吗?你用什么shell来运行wget

标签: wget


【解决方案1】:

我认为这是你需要的:

wget -p -k http://grephysics.net/ans/0177/{1..100}

说明:

-k:重写链接以指向本地资产

-p:获取显示页面所需的所有图片、js、css等

{1..100} :这指定了要下载的 URL 范围,在您的情况下,我们将页面标记为 1 到 100。

为什么递归下载不起作用?

您发布的链接是一个很好的第一资源,可能是大多数人想要的。但是 wget 递归下载的方式是获取指定的第一个页面(即根),然后跟随链接到子页面。然而,grephysics 的设置方式是 http://grephysics.net/ans/0177 将我们引导至 404。它没有链接供 wget 遵循以下载子页面。


如果你的 wget 不支持 {}

您仍然可以使用以下命令获得相同的结果:

for i in {1..100}; do echo $i; done | wget -p -k -B http://grephysics.net/ans/0177/ -i -

说明

for i in {1..100};... :这将打印值 1 到 100。

| :对于任何没有见过这个的人,我们将前一个命令的输出通过管道传输到以下命令的输入中

-p:获取显示页面所需的所有图片、js、css等

-k:重写链接以指向本地副本

-B :指定要与 -i 选项一起使用的基本 URL

-i :读取要从文件中获取的 url 列表。由于我们指定了“文件”-,它从标准输入读取。

因此,我们读取 1 到 100 的值,并将它们附加到我们的基本 url http://grephysics.net/ans/0177/ 并获取所有这些 url 和所有与之相关的资产,然后重写链接以便我们可以离线浏览。

【讨论】:

  • 你试过运行这个吗,这对我不起作用。
  • wget -p -k http://grephysics.net/ans/0177/{1..100} --2017-11-11 18:41:13-- http://grephysics.net/ans/0177/%7B1..100%7D Resolving grephysics.net (grephysics.net)... 64.150.181.80 Connecting to grephysics.net (grephysics.net)|64.150.181.80|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2017-11-11 18:41:14 ERROR 404: Not Found. Converted links in 0 files in 0 seconds.
  • 嗯...看起来您的 wget 版本不理解指定范围。我再看看。
  • 输出:此时我出乎意料。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多