wget和漂亮的url

为了自动化东西,我需要recursion下载一个网页。 我正在使用wget,因为它可能是最适合程序员的工具,使用-r标志触发链接跟随。

wget,hovewer,不处理漂亮的url,即http://webpage/index.php/my/pretty/link ,将它们视为子目录。

有没有解决这个问题? (我宁愿不修改该网页的源代码)

干杯,MH

编辑:问题解决了

谢谢你的洞察力回复!

我已经设法解决这个问题 – 虽然对所提到的网页做了小的修改。

我做的很简单:我已经使用我的服务器的URL重写function和redirect的URL从http:// webpage / my / pretty / link到http://webpage/index.php/my/pretty/link 。 然后,使用以下wget标志:

wget --mirror --page-requisites --html-extension --convert-links http://webpage/ 

瞧! 这一切都是完美无缺的(在这个过程中还有一些直接的东西,但是从某个angular度来看,从这个angular度来处理它是微不足道的)。

那么,wget应该知道index.php / my / pretty是不是一个目录呢? 从HTTP客户端的angular度来看,这并不明显。

也许你可以用wget --exclude-directories来解决这个问题? 或者可能检查wget -nd ,这将创build一组平面文件(不是目录树)。 检查出来。

漂亮的URL通常不是自我依赖的,他们更经常地使用机制来传递数据(通过POST或cookie)到后端的基于MVC框架的应用程序。

如果您使用多个wget调用,值得注意的是,wget使用cookie,但默认情况下不会保存它们…意味着每个wget都将从一个新的cookie开始,并且不会提供状态信息。 –save-cookies(文件名)和–load-cookies(文件名)选项将帮助你。

如果Web应用程序使用POST作为技工,我想你可能不得不为该网站编写特定的爬虫程序。

也许你可以使用火狐iMacros插件而不是wget? 它有命令行支持,但不能跟随链接自动(你需要脚本)。

http://wiki.imacros.net/iMacros_for_Firefox#Command_Line_Support

我用它来每天下载各种报告。

如果你多次获得相同的网站,那么你可以考虑使用别名命令,你可以使用友好的名称作为别名来使用全path名

 alias mywget='wget http://domain.com/file/?search&channel=24' 

显然添加任何你需要的开关,然后你的窥视可以运行mywget来做function

虽然我不知道会发生什么事情,一旦它击中&通常会把这样的url在引号中

希望有所帮助