以前、Windows では、壁紙 Web サイトや美しい女性の QQ フォト アルバムにアクセスしたり、情熱的な美人写真 Web サイトから写真をダウンロードしたりすることが多く、右クリックして「名前を付けて保存」する必要がありました。古典的な写真のセットに遭遇した場合、このような操作を繰り返すと、間違いなくダウンロードする意欲を失います。その後、DownloadThemAll と思われる Firefox 用のプラグインを使用しました(覚えていないのですが、Web リンクを一括でダウンロードするためのもので、形式をフィルタリングして画像をダウンロードできます)。これを Thunder と組み合わせて使用します。画像のダウンロードの効率を大幅に向上させることができます(ただし、ページ画像が小さすぎる場合、ダウンロード後に不要なファイルをフィルタリングして削除するのに時間がかかります)。今は Ubuntu を使っていますが、Windows も Thunder も持っていませんし、Firefox ももう何年も使っていません。 Web ページから美しい写真をバッチでダウンロードするにはどうすればよいでしょうか? Chrome でそのようなプラグインを探していましたが、残念ながら IMG インスペクター プラグインしか見つかりませんでした。このプラグインの仕組みは、ベース URL を定義し、プレースホルダーを使用し、定義されたステップ サイズとサイクル範囲を再生成することです。リンクしてプレビューします。この機能は弱すぎると言わざるを得ません。画像セットの URL ですら必ずしも規則的ではないため、この方法はお勧めできず、実用的ではありません。
そこで、その後 Chrome プラグインの開発を学んで自分で作ろうと考えたのですが、残念ながらあまりやる気がありませんでした。また、Chrome プラグインが画像のダウンロードの問題を解決できるかどうかもわかりません。ダウンロードするためにクライアント ダウンロード ソフトウェアを呼び出すのか、ネイティブ ブラウザを呼び出すのか、さらに、この方法では、Chrome API の高度なメソッドをいくつか学ばなければなりません。と開発費が一気に嵩みます。それから諦めた。そこで私は気持ちを切り替えて考え続けました。次に、いくつかの難しい問題を 1 つずつ分解して分析します (環境: UBUNTU+CHROME/FIREFOX):
1) 現在のページの画像アドレスを取得するにはどうすればよいですか?
これを行う最も簡単な方法は、Chrome コンソールまたは Firebug でスクリプトを実行することです。また、強力なオープン ソース フレームワークである SimpleHtmlDom などの Web クローラー ツールを使用することも考えました (jquery に精通している場合は、このフレームワークを使用すると、次のことが可能になります)。サーバー側で jquery を使用してラベルを取得すると非常に便利です)。ただし、これは効率が少し劣る可能性があります。複雑さも少し増加しました。2) 現在のページの画像サイズが私の「食欲」に合っているかどうかを判断するにはどうすればよいですか?
この質問を採点する際には 2 つの状況を考慮する必要があります: Web ページの画像は通常、サムネイルと元の画像に分けられます。通常、サムネイルには元の画像へのリンクが付いています。つまり、img タグを a タグでラップするには、img タグの src 値の代わりに a タグの href 値を取得する必要があります。通常、元の画像は単なる img タグであるため、width を使用できます。これらの画像をフィルタリングするための Image オブジェクトの高さと。サムネイル フィルタリングの場合、新しい Image オブジェクトを src の値に設定し、その高さと幅をフィルタリングできます。ただし、このような画像は一般に非常に大きいので、通常はフィルタリングしません。逆に、ロゴやボタンの画像の多くはリンクで囲まれた小さな画像であるため、フィルタリングする可能性が最も高いのは a タグ内の img オブジェクトです。
3) 写真をダウンロードするにはどうすればよいですか?
上記の 2 つの手順は、コンソール スクリプト プログラムを使用して完了します。コード全体は 10 行を超えません (jquery カメラの読み込みコードを含む)。最後に、現在のページでフィルタリングした後の画像のアドレスを手間をかけずに取得できます。残念ながら、アドレスを取得するのはこのステップだけでは役に立ちません。実際に役に立たないステップは、これらの写真をローカル マシンに一度にダウンロードする方法です。 Chrome プラグインの開発方法と、Chrome がシステム メソッドを呼び出す方法を知っていれば (実際のところ、Chrome でそれができるかどうかはわかりません。ブラウザのセキュリティ制限が十分に厳しい場合、これは間違いなく機能しません)。強力なダウンローダーである wget についてはよくご存知でしょう。これは簡単に解決できます。残念ながら、最初の 2 つは詳しくありませんが、すべての道はローマに通っていて、別の道があるはずです。
4) コンソールの上を飛んでください
今、私たちの考えはChromeコンソールに詰まっています。たくさんの画像リンクがありますが、それらをダウンロードする方法がわかりません(実際には、それらは現在のウィンドウにある単なる画像リンクです)。私は常に Chrome プラグインの開発についていくつかの幻想を抱いてきましたが、残念ながら学習意欲がなく、Chrome と同じくらい安全で厳密なブラウザで js がクライアントと対話できるのかどうか、常に疑問に思っていました。
そこで、私は一歩下がって問題について考え始めました。ファイルをダウンロードする代わりに、これらのファイルを後で読める場所にローカルに保存するだけで済みました。そこで、このアイデアは html5 のローカル ストレージ localStorage とローカル データベースに続き、Google Gears のローカル データベースも検討されましたが、その後、それは複雑すぎるか、実現不可能であることがわかりました。ゆっくりと、私の考えは単純な方向、つまり jQuery、そう、彼です -- $.getJSON() へと移り始めました。画像アドレスをドメインを越えてローカル Web サイトに送信し、バックグラウンドでダウンロードできれば十分ではないでしょうか?そこで、すぐに Code Igniter を使用して Web サイトを作成しました。コントローラーにメソッドを 1 つだけ含む PHP コントローラー クラス ファイルを追加しただけで、コードは 10 行を超えませんでした。コードの機能は、すべての画像リンクをラップし、テキスト ファイル (urls.txt) に書き込むことだけです。
5) 無敵のダウンローダー
もうすぐ終わりですが、もしかしたら誰かが私に尋ねたかもしれませんが、まだ写真をダウンロードできていないのですか?へー、nb 文字がもうすぐ登場します: wget -i -b urls.txt。ターミナルに Web サイトのディレクトリを入力してこのコマンドを実行すると、テキスト ファイルの各行の画像アドレスがバックグラウンドで自動的にダウンロードされます。
PS: 数日前、私はこのコマンドに慣れていませんでしたが、実験のために H ネットワークを使用し、バックグラウンドで 1.1G のポルノ画像をサイレントにダウンロードするためにパラメータを悪用しました。後でプロセスを強制的に強制終了する必要があることがわかりました。 。つまり、このコマンドは Web サイトのコンテンツをダウンロードするのに非常に強力です。 Linux を使用している場合、このコマンドは非常に邪悪であり、その気になれば悪いこともできます。
6) 恥ずかしくないのですか?
この操作プロセスは本当に恥ずかしいです。
囧1: a) ローカル Web サイトを展開します -- 》 b) 右クリックして Chrome コンソールまたは Firebug を開きます -- >> c) スクリプトをコピーします -- >> d) 貼り付け -- >> e) Enter -- f >> 開くターミナル -- g》wget。この操作は、多くの写真 (サムネイル、写真のセット) を含む Web ページの場合に非常に便利です。しかし、10 個の Web ページを開いた場合、各ページは操作 b、d、e を実行する必要があります。このスクリプトを Chrome プラグインにしてブラウザに埋め込むことができれば、ページを開くという少なくとも 2 つのステップを節約できます。プラグイン アイコンを手動でクリックするか、スクリプトを自動的に実行するように設定します。これにより、使いやすさが大幅に向上します。
囧2: wget ステップを保存し、PHP バックグラウンドで直接ダウンロードを実行する方法。これには、php を使用して ubuntu システム メソッドを呼び出すことを検討する必要があります。私はそれに慣れていないため、勉強する必要があります。
囧三: Web サイトを展開する手順を節約する方法 Web サイトが必要な根本的な理由は、Cookie を検討しましたが、サイズ制限が問題です。画像アドレスが 100 を超えるのは通常です (特に中国語を含む)。保管後のアクセスの容易さの問題も考慮する必要があります。
これらの問題はまだ検討されておらず、現在は囧二の実装を検討しているところです。実際、このプロセスでは技術自体はあまり向上しませんでしたが、後からプロセス全体を振り返ってみると、問題に直面したときの考え方や方法論が大きく改善されていることがわかりました。誰でも議論することを歓迎します!