【问题标题】:Why does wget ignore the query string in the URL?为什么 wget 会忽略 URL 中的查询字符串?
【发布时间】:2014-12-15 22:57:46
【问题描述】:

我想用wget下载以下18个HTML文件:

http://www.ted.com/talks/quick-list?sort=date&order=desc&page=18
http://www.ted.com/talks/quick-list?sort=date&order=desc&page=17
...
http://www.ted.com/talks/quick-list?sort=date&order=desc&page=1

无论page= 之后是什么,它总是下载列表的第一页。我是否必须转义 URL 中的某些字符?怎么样?

【问题讨论】:

  • 您是在使用wget "http://www.ted.com/talks/quick-list?sort=date&order=desc&page=18" 还是不使用双引号?
  • @rgbimbochamp 我会试一试。有没有解释为什么要解决这个问题?
  • @hrbrmstr 啊!所以我应该把整个网址用双引号括起来?我会试试的。
  • & 在大多数 shell 环境中是一个特殊字符,因此它在后台执行调用时永远不会到达 wget。如果可行,我会将其发布为答案。

标签: shell command-line wget


【解决方案1】:

& 是大多数 shell 环境中的特殊字符。您可以使用双引号引用 URL 以将整个内容作为参数传递给wget:

wget "http://www.ted.com/talks/quick-list?sort=date&order=desc&page=18"

【讨论】:

  • 您将如何使用 {1..20} 通过字符串下载一系列文件?
【解决方案2】:

特殊情况:wget "URL"的格式还是有问题,虽然解决了&的问题,但还是不能通过!符号。

解决方案:URL 的单引号而不是双引号将解决此问题,例如:

wget 'https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-G.798-201712-I!!PDF-E&type=items'

如上例所示,它适用于我,其中包含 & 和 ! 符号。我不确定它是否是所有平台的例外解决方案(即官方 POSIX shell)。

奖励:进一步我们可以使用wget -c 'URL',这样,万一一次失败,我们不需要从头开始。

【讨论】:

    【解决方案3】:
    1. 将您的 URL 列表存储在一个文件中(每个 URL 单独一行!!):

      echo "http://www.ted.com/talks/quick-list?sort=date&order=desc&page=18 http://www.ted.com/talks/quick-list?sort=date&order=desc&page=17 ... " > wget_filelist.txt

    2. 调用 wget 来检索东西:

      wget -i wget_filelist.txt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-04
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      相关资源
      最近更新 更多