0

このコマンドを実行して、次の Web サイトからダウンロードし、-pおよび-kオプションを追加しました (説明については、こちらを参照してください)。

wget -pk http://www.tomshardware.com/

それが返すものは

...
--2012-11-29 23:32:42--  http://www.tomshardware.com/%3C%25=%20content[i].buildUserPic%20%25%3E
Reusing existing connection to www.tomshardware.com:80.
HTTP request sent, awaiting response... 404 Not Found
2012-11-29 23:32:43 ERROR 404: Not Found.

終了ステータスは 8 で、実行が失敗したことを示します。成功しないのはなぜですか?

4

2 に答える 2

2

Jason Sperske の回答に追加するには: wget に でページ リソースをダウンロードするように指示したため、ページが使用する要素-pによって混乱しています。<script type="text/html">このタイプのスクリプト タグは、一部の JavaScript テンプレート エンジンで使用されます。コンテンツは有効な HTML ではありません (最初にテンプレート エンジンで解析する必要があるため) が、wget はそれを解析し、URL として認識されるものに従っています。

リンクhttp://www.tomshardware.com/%3C%25=%20content[i].buildUserPic%20%25%3Eは、wget が次の URL にアクセスしようとした結果です。

<img class="buildUserPic" src="http://www.tomshardware.com/&lt;%=&#32 content[i].buildUserPic&#32;%&gt;" />

そのため、wgetWeb サイトを見つけることができますが、基本的に任意の文字列を解析しているため、サイトのスクリプトがその文字列を読み取って適切な値に置き換えて有効な HTML にすることはできません。

編集: テンプレート自体 (<%= の代わりに <%= が含まれる) の特定の行にエスケープ エラーがあるように見えますが、他の行は問題なく、説明は同じだと思います。

于 2012-11-30T05:25:13.207 に答える
1

デフォルトのドキュメント(index.htmlまたはWebサーバーに応じて同等のもの)と、その中のすべての参照アセット('A'要素、'IMG'および'SCRIPT'要素のsrc属性および'LINK'要素)をフェッチしています資料。それらの参照の1つが壊れており(おっと)、したがって404です。この場合、ブラウザーでは問題ないJavaScriptのビットのように見えますが、wget(JavaScriptエンジンがない)ではURLとして解釈されます。これは、存在しない参照を指します。

于 2012-11-30T04:42:05.827 に答える