我使用wget
来访问文本文件中的链接列表。链接示例如下:
http://localhost:8888/data/test.php?value=ABC123456789
PHP 文件返回一个表格,其中包含将响应附加到另一个文本文件的信息。至于错误,很明显目前它无法处理URL的数量,因为它超出了字符限制。如果我只使用2个网址,它的效果非常好。
文本文件共包含10 000个网址。我正在使用的命令是:
wget -i /Applications/MAMP/htdocs/data/URLs.txt -O - >> /Applications/MAMP/htdocs/data/append.txt
根据我的研究,快速找到修复"这是为了更改LimitRequestLine
或添加它(如果它不存在)。由于我使用MAMP(对于MacOS),我所做的是:
打开/Applications/MAMP/conf/apache/httpd.conf
并在AccessFileName .htaccess
:
LimitRequestLine 1000000000
LimitRequestFieldSize 1000000000
但我仍然得到同样的错误。我不知道为什么会这样。
使用cURL
可能更容易吗?如果是,那么类似的命令是什么?
答案 0 :(得分:3)
您的414: Request-URI Too Large
错误与网址数量无关,不,使用curl无法提供帮助。
问题是你的网址中有一些(或1?)对目标服务器来说太长了,导致错误。
您可以通过执行
来识别导致错误的网址cat URLs.txt | awk '{print length, $0}' | sort -nr | head -1
(感谢该命令的https://stackoverflow.com/a/1655488/1067003)
另一个可能的原因是你没有正确地终止URLs.txt中的网址,并且某些网址(或所有网址?)会被连接起来。对于记录,终止字符是" \ n",也就是十六进制代码0A - 而不是大多数Windows编辑使用的\ r \ n,我不确定wget如何处理这种格式错误的行终结者(根据其定义)
请注意,如果要下载.HTML文件(或任何其他可压缩文件),curl会比wget快得多,因为curl支持使用--compressed
参数的压缩传输(利用gzip
虽然wget根本不支持压缩,但是HTML压缩非常好(比使用gzip的未压缩版本容易小5-6倍)