[解決済み] UIWebViewからHTMLコンテンツを読み込む
質問
に読み込まれたウェブページの生の HTML コンテンツを読み取ることは可能ですか?
UIWebView
?
もしそうでなければ、iPhone SDKでWebページから生のHTMLコンテンツを引き出す他の方法(たとえば、.NETの
WebClient::openRead
)?
どのように解決するのですか?
2番目の質問は、実は答えるのが簡単です。を見てください。
stringWithContentsOfURL:encoding:error:
このメソッドでは、NSURL (NSString から簡単にインスタンス化できます) のインスタンスとして URL を渡すと、その URL のページの完全なコンテンツを含む文字列を返します。たとえば
NSString *googleString = @"http://www.google.com";
NSURL *googleURL = [NSURL URLWithString:googleString];
NSError *error;
NSString *googlePage = [NSString stringWithContentsOfURL:googleURL
encoding:NSASCIIStringEncoding
error:&error];
このコードを実行した後
googlePage
には www.google.com の HTML が、そして
error
には取得時に発生したすべてのエラーが含まれます。(あなたは
error
の内容はフェッチ後に確認する必要があります)。
他の方法(UIWebViewから)は少しトリッキーですが、基本的に同じコンセプトです。あなたは リクエスト をビューから取得し、前と同じようにフェッチを行います。
NSURL *requestURL = [[yourWebView request] URL];
NSError *error;
NSString *page = [NSString stringWithContentsOfURL:requestURL
encoding:NSASCIIStringEncoding
error:&error];
EDITです。
しかし、これらのメソッドは両方とも2回リクエストを行うので、パフォーマンスに打撃を与えます。現在ロードされているUIWebViewからコンテンツを取得することで、これを回避することができます。
stringByEvaluatingJavascriptFromString:
メソッドを使用してコンテンツを取得することで、これを回避できます。
NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString:
@"document.body.innerHTML"];
これは Document Object Model を使ってビューの現在の HTML コンテンツを取得し、JavaScript をパースして、HTML の NSString* として提供します。
もう一つの方法は、最初にプログラム的にリクエストを行い、リクエストされたものからUIWebViewをロードすることです。例えば、上記の2番目の例で、あなたが
NSString *page
を呼び出した結果
stringWithContentsOfURL:encoding:error:
. そして、その文字列をウェブビューに書き込むには
loadHTMLString:baseURL:
を使用してウェブビューにプッシュすることができます。
[yourWebView loadHTMLString:page baseURL:requestURL];
ただし、これで読み込んだページで見つかったJavaScriptを実行するかどうかはわかりません(メソッド名です。
loadHTMLString
というメソッド名はやや曖昧で、docsはそれについてあまり言及していません)。
より詳しい情報は
関連
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] bootstrapでボタンにリンクを貼るには?
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] HTMLページからのリダイレクト
-
[解決済み] ページロード後にJavaScriptを実行させるには?
-
[解決済み] 入力フィールドから属性を読み込むと、HTMLエンコーディングが失われる
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み】UIWebViewが垂直に "バウンド "するのを止めるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iframeフレームワークの使用
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] 箇条書きのない順序なしリストが必要です。
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] リンクを新しいタブまたはウィンドウで開く[重複]。
-
[解決済み] インラインCSSでa:hoverを記述するには?
-
[解決済み] div内の要素を縦に並べるにはどうしたらいいですか?
-
[解決済み] 入力フィールドに :before や :after 疑似要素を使用できますか?
-
[解決済み] HTMLのレイアウトにテーブルを使用しない理由は?[クローズド]
-
[解決済み] UIWebViewにローカルのhtmlファイルを読み込む方法