如何获取 Youtube 可怕的 URL

lok*_*ika 5 shell wget

我要去 wget youtube 搜索页面,那里的 URL 很糟糕。这是searchkeyword按上传日期排序的搜索示例:

wget http://www.youtube.com/results?search_type=videos&search_query=searchkeyword&search_sort=video_date_uploaded&suggested_categories=26%2C27%2C22%2C28%2C24
Run Code Online (Sandbox Code Playgroud)

这是搜索结果的第 2 页:

wget http://www.youtube.com/results?search_type=videos&search_query=searchkeyword&search_sort=video_date_uploaded&suggested_categories=26%2C27%2C22%2C28%2C24&page=2
Run Code Online (Sandbox Code Playgroud)

wget 为我提供了两个页面的误导性页面。

phu*_*ehe 9

将 URL 用单引号括起来应该可以解决问题。此外,您还需要为下载的文件命名(否则它将具有wget从 URL 猜测的奇怪名称)。所以

wget 'http://www.youtube.com/results?search_type=videos&search_query=searchkeyword&search_sort=video_date_uploaded&suggested_categories=26%2C27%2C22%2C28%2C24' -O nice_name.html
Run Code Online (Sandbox Code Playgroud)

根据 laebshade 的评论解释(感谢提醒我):URL 中的许多有趣的字符将被shell解释为特殊命令或其他控制序列。从我的头顶,〜!# ^ & * 对 shell 来说都意味着别的东西(取决于你使用的是什么 shell)。你可以用\它们一一转义,或者引用整件事。

  • 最好解释一下使用引号的原因。它没有给你正确的 URL 的原因是因为 URL 包含一个“&”(&符号)字符,你的 shell 将它解释为背景的“fork()”;换句话说,您的 shell 将命令 `wget http://youtube.com/results?search_type=videos&` 的第一部分发送到后台,然后将“命令”的下一部分视为新的,直到它到达另一个`&`,依此类推。 (4认同)