0

各ページの最初の段落をから取得する必要がありますUIWebView。どうすればこれを入手できますか?

正規表現を検出するためのコードも1つありますが、段落の内容の代わりに段落クラス名が付けられています。

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(<p\\s[\\s\\S]*?=\\s*?['\"](.*?)['\"][\\s\\S]*?>)+?"
                             options:NSRegularExpressionCaseInsensitive
                             error:&error];

[regex enumerateMatchesInString:html
                        options:0
                        range:NSMakeRange(0, [html length])
                        usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {

    NSString *img = [html substringWithRange:[result rangeAtIndex:2]];
    NSLog(@"img src %@",img);
}];

NSString *classs=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementbyClassName(img)"];
4

1 に答える 1

0

これを行う最も堅牢な方法は、ドキュメントの最初の段落要素を見つけてそのテキストを返すWebビューのコンテキストでJavaScriptコードを実行することです。UIWebViewstringByEvaluatingJavaScriptFromStringメソッドを使用してこれを行うことができます。

以下のコードは、タグ名Pのドキュメント内のすべての要素の配列を取得することから始まります(これは、探しているテキストがこれらの要素に含まれていることを前提としています。そうでない場合は、さらに作業が必要になります)。次に、少なくとも1つの段落要素があるかどうかを確認し、ある場合はそのテキストコンテンツを返します。それ以外の場合は、空の文字列を返します。

- (void)webViewDidFinishLoad:(UIWebView *)_webView
{
    NSString *code = @"var paragraphs = document.getElementsByTagName('P');"
                      "paragraphs.length > 0 ? paragraphs[0].innerText : '';";
    NSString *text = [_webView stringByEvaluatingJavaScriptFromString: code];
    // ... do something with text ...
}

ドキュメントの他の側面を調べたり変更したりする場合は、Webビューのコンテキストで任意のJavaScriptコードを実行できます。

于 2013-04-01T12:40:45.820 に答える