0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

wget で相対リンクがダウンロードされない

Last updated at Posted at 2020-01-28

Problem

大学のサーバ上のneko.htmlにリンクが張られてる書類をwgetで一括でダウンロードしようとしたかった

<http server>
- <nyaan>
    - neko.html(ここに<meow>以下のファイルの相対リンクが説明文とともにリストされている)
    - <meow>
        - cat1.pdf
        - cat2.pdf
        - ...
    - ...
- ...  

以下のようにしたらneko.htmlrobot.txtしかダウンロードされなかった.

wget -r http://<nyaan>/neko.html

Solution

以下のようにしたら解決した

wget -r -F -B http://<nyaan>/ -i http://<nyaan>/neko.html
  • -F <=> force-html :
    • -iで指定するfileをHTMLとして認識させ<a>で指定されたURLをたどる
  • -B URL <=> --base=URL
    • 相対リンクのベースを指定する.
    • e.g. -F -i neko.htmlとしたときneko.htmlhttp://<nyaan>以下にある想定で相対リンクが書かれている場合,
    • 参考: このブログの応用5 (ブログタイトルが参照禁止っていう名前だけどこういう参照もだめだったかな)
  • -i file <=> --input-file=file
    • [単独]ダウンロードしたいファイルのURLのリストを記述したファイルを指定する.
    • [w/ -F] ダウンロードしたいファイルのURLを <a>タグでふくんだHTMLを指定
    • このオプション指定時にはWGET自体のコマンドライン引数は必要ない

-L とか態々相対リンクだけたどるオプションもあるし,元々相対リンクもたどってくれそうだけど何故?
index.htmlじゃなかったからかなとも思ったけどよくわかってない.調べる気になったら調べて追記.

Postscript

  • -iの指定URLがリモートの場合,デフォルトでHTMLとして解析してくれる.
  • また-Bも指定されなければ,-iで指定したところをベースに相対リンクを追ってくれる.
  • -iはそもそもその指定ファイルに<a>で示されているURLをたどろうとするため,今回のように指定ファイルに欲しいファイルがすべてリストされている場合-rもいらない
  • -iで指定したファイルもダウンロードしてくれるっぽい

したがって,

wget -i http://<nyaan>/neko.html

でOK.

ただし最初のトライ(-rオプションのみ)がだめなのが今なお謎.

neko.htmlの中身

大学の当該の書類をリストしているページの中身は多少改変しているがミスも含めて大体以下.質素というよりなんかかなりお粗末.そのせい?


<HTML>
<HEAD>
<TITLE> neko </TITLE>
</HEAD>
<body>

<CENTER>
<H2>neko</H2>
</CENTER>

<br>

<h3>neko document</h3>
<UL>
<LI>cat1:  <a href="meow/cat1.pdf" target="_blank">PDF</a>
<LI>cat2:  <a href="meow/cat2.pdf" target="_blank">PDF</a> 
</UL>

<br>

</BODY>
</HTML>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?