UIWebViewを利用して表示しているサイトの
ソースコードを取得しようと考えています。
下記が実際に実装したコードです。
- (void)viewDidLoad
{
[super viewDidLoad];
//サイドメニューから受け取ったindexPathの番号を取得処理後
if(i == 0){ NSString* urlString = @"http://google.com/"; NSURL* googleURL = [NSURL URLWithString: urlString]; NSURLRequest* myRequest = [NSURLRequest requestWithURL: googleURL]; [self.myWebView loadRequest:myRequest]; NSString* bodyHtml = [self.myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].outerHTML"]; NSLog(@"ソースは%s", "start"); NSLog(@"html:%@", bodyHtml); NSLog(@"ソースは%s", "end"); }
}
- (IBAction)showMenu
{
[self.view endEditing:YES];
[self.frostedViewController.view endEditing:YES];
[self.frostedViewController presentMenuViewController];
}
@end
こうすると
ログに出力されるのは
NSString* bodyHtml = [self.myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].outerHTML"];
の部分を
NSString* bodyHtml = [self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
と変えると何も出力されず
NSString* bodyHtml = [self.myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].outerHTML"]; NSLog(@"ソースは%s", "start"); NSLog(@"html:%@", bodyHtml); NSLog(@"ソースは%s", "end");
の部分を外に出して
- (void)webViewDidFinishLoad:(UIWebView *)myWebView
{
//このパターンや
NSString *fullHtml = [self.myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].outerHTML"];
NSLog(@"html:%@", fullHtml);
//このパターン
NSString *bodyHtml = [self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
NSLog(@"html:%@", bodyHtml);
}
という様に試してもソースが出力されませんでした。
どういった事が原因なのでしょうか。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/07 01:31
2015/07/07 10:20
2015/07/08 01:35 編集