Web サイトのコンテンツ全体をダウンロードして、アプリでデータを使用できるようにしたいと考えています。過去に NSURLConnection を使用してファイルをダウンロードしたことがありますが、Web サイト全体からすべてのファイルをダウンロードできるとは思えません。アプリSite Suckerは知っていますが、その機能をアプリに統合する方法はないと思います。AFNetworking と ASIHttpRequest を調べましたが、役に立つものは何もありませんでした。アイデア/考えはありますか?ありがとう。
1 に答える
すぐに使用できるものはないと思いますが、あなたが言及した既存のライブラリ (AFNetworking & ASIHttpRequest) を使用すると、かなり遠くまで行くことができます。
これが機能する方法は、メインの Web サイトをロードすることです。次に、ソースを調べて、そのページがそのコンテンツを表示し、他のページにリンクするために使用するリソースを見つけます。次に、それらのリソースのコンテンツとそのリソースを再帰的にダウンロードする必要があります。
ご想像のとおり、このアプローチにはいくつかの注意事項があります。
ソース コードに記載されているファイルのみをダウンロードできます。非表示のファイルまたはどのページでも使用されていないファイルは、アプリがその存在を認識しないため、ダウンロードされません。
相対パスと絶対パスに注意してください: ./image.jpg、/image.jpg、http://website.com/image.jpg、www.website.com/image.jpgなどはすべて同じ画像にリンクしている可能性があります.
page1.html は page2.html にリンクでき、その逆も可能であることに注意してください。チェックを行わないと、無限ループが発生する可能性があります。
外部の Web サイトにリンクしているページを確認してください。多くの Web サイトには外部へのリンクがあり、ここでは 8 GB のストレージを備えた iPhone にインターネット全体をダウンロードしているため、おそらくそれらをダウンロードしたくないでしょう。
動的ページ (PHP などのサーバー側スクリプト言語を使用するページ) は、動的データを提供するサーバー バックエンドを失うため、静的になります。
これらは私が思いついたものですが、他にもあると確信しています。