ファイルのダウンロードを自動化するにはどうすればいいですか?

ファイルのダウンロードを自動化するにはどうすればいいですか?

私は、本に掲載されているアートワークの大半の高解像度スキャンのデジタル版にアクセスできるパスが付いた本を手に入れました。すばらしいです! 残念ながら、これらすべては 177 ページに 8 枚の画像で表示され、それぞれに jpg の zip ファイルへのリンクがあります。閲覧するのは非常に面倒で、座って 1 つずつクリックするのではなく、一度にすべてのファイルを取得できればいいのですが。

archive_bookname/index.1.htm - archive_bookname/index.177.htm これらの各ページには、ファイルへのリンクが 8 つあります。

<snip>/downloads/_Q6Q9265.jpg.zip、、などのファイルへのリンクは<snip>/downloads/_Q6Q7069.jpg.zip順序<snip>/downloads/_Q6Q5354.jpg.zipどおりではありません。親/downloads/フォルダーのディレクトリ リストを取得できません。

また、ファイルはログインウォールの背後にあるため、セッション情報を再作成する方法を知らないと、ブラウザ以外のツールを実行するのは難しいかもしれません。

wget について少し調べてみましたが、かなり混乱していて、これが役に立つかどうかわかりません。この問題に対処する方法についてアドバイスはありますか? wget はこれを自動的に実行できますか?

答え1

入力HTMLファイルを指定するには、

wget -F -i <file>

つまり、HTML ファイルをダンプしてループするだけです
(相対リンクのベース URL を追加しました)。

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

あるいは

何らかの方法でリンクをファイルにダンプし(改行で区切って)、次のようにします。

wget -i <url-file>

これらのリンクにアクセスする良い方法は次のとおりです。

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

おそらく 'url-file' に追加する for ループ内

答え2

Python を使用する方が簡単かもしれません。これが Python を使用したソリューションです。Python がオプションでない場合は無視してください。:)

ウェブサイトをスクレイピングすることは合法だと思います。

archive_bookname/index.1-177.htmループしてそれらをスクラップする簡単なPythonスクリプトを書いてください美しいスープ、CSSクラスセレクターまたは単純な正規表現マッチングを使用してリンクを見つけ、urllib.urlretrieve()ファイルを取得するには、そのようにします。

答え3

または、Perl とその優れたモジュールである www::mechanize を使用することもできます。何かをまとめるのは非常に簡単で、公式の CPAN ドキュメントには多数の例があります。

関連情報