iOS,在web视图上显示站点的特定html内容

iOS,在web视图上显示站点的特定html内容,html,ios,parsing,Html,Ios,Parsing,我想从站点html的特定部分检索数据,并编写了以下代码。不幸的是,代码不起作用。我怎样才能解决这个问题 html类名为“topic_content”,适用站点中的每一篇文章都包含它(参见代码中的注释) @implementation DetailViewController .... UIActivityIndicator视图*activityIndicator; -(无效)viewDidLoad{ ..... activityIndicator=[[UIActivityIndicatorVie

我想从站点html的特定部分检索数据,并编写了以下代码。不幸的是,代码不起作用。我怎样才能解决这个问题

html类名为“topic_content”,适用站点中的每一篇文章都包含它(参见代码中的注释)

@implementation DetailViewController
....
UIActivityIndicator视图*activityIndicator;
-(无效)viewDidLoad{
.....
activityIndicator=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[活动指示器停止设置动画];
....
[自述新闻];
}
-(作废)callDetailNews{
....
if([[Reachability reachabilityForInternetConnection]currentReachabilityStatus]!=NotReachable)
{
//文章链接::http://el3en.com/?articles=topic&topic=20840 (令牌ID)
// 
//NSString*someHTML=[webView stringByEvaluatingJavaScriptFromString:@“document.getElementsByClassName('box')[0].innerHTML;”;
NSString*articleString=[NSString stringWithFormat:@”http://el3en.com/?articles=topic&topic=%@“,token_ID];
NSURL*articleURL=[NSURL URLWithString:articleString];
n错误*错误;
NSString*articlePage=[NSString stringWithContentsOfURL:articleURL
编码:NSASCIIStringEncoding
错误:&错误];
[_webviewloadhtmlstring:articlePage baseURL:nil];
//NSString*someHTML=[[u webView stringByEvaluatingJavaScriptFromString:@“document.getElementsByClassName('topic_content')[0]。innerHTML;”];
//NSLog(@“Content:%@”,someHTML);
}
.....
}
-(void)webView加载:(UIWebView*)webView{
[活动指示器启动激活];
self.webView.hidden=true;
}
-(void)webViewDidFinishLoad:(UIWebView*)webView{
[self.webView stringByEvaluatingJavaScriptFromString:@“document.getElementsByCassName('topic_content')[0].sinnerHTML;”;
[活动指示器停止设置动画];
self.webView.hidden=false;
}

谢谢

您应该使用innerHtml而不是RHTML,除此之外,您还需要获取字符串并将此字符串加载到另一个Web视图中。请看例子

#import "ViewController.h"

@interface ViewController ()
@property (strong, nonatomic) IBOutlet UIWebView *fakeView;
@end

@implementation ViewController


UIActivityIndicatorView *activityIndicator;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    [activityIndicator stopAnimating];



    [self callDetailNews];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


-(void)callDetailNews{

    if ([[Reachability reachabilityForInternetConnection]currentReachabilityStatus]!=NotReachable)
    {
        // article link :: http://el3en.com/?articles=topic&topic=20840 (token_ID)

        // <td class="topic_content" colspan='6' itemprop="articleBody"  style="text-align:justify;  word-wrap: break-word; width:100%">

        // NSString *someHTML = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('box')[0].innerHTML;"];

        NSString *articleString = [NSString stringWithFormat:@"http://el3en.com/?articles=topic&topic=%@",@"20840"];

        NSURL *articleURL = [NSURL URLWithString:articleString];
        NSError *error;
        NSString *articlePage = [NSString stringWithContentsOfURL:articleURL
                                                         encoding:NSASCIIStringEncoding
                                                            error:&error];

        NSLog(@"Request %@",articleURL);
    self.fakeView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
        self.fakeView.delegate = self;
        [self.fakeView loadRequest:[NSURLRequest requestWithURL:articleURL]];

        //NSString *someHTML = [_webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('topic_content')[0].innerHTML;"];
        //NSLog(@"Content : %@",someHTML);
    }

}

- (void)webViewDidStartLoad:(UIWebView *)webView {
    [activityIndicator startAnimating];
    self.webView.hidden=true;
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    NSLog(@"error %@" ,[error description]);
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    if(webView == self.fakeView) {
        NSString* javascriptString = [self.fakeView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('topic_content')[0].innerHTML"];

        NSLog(@"%@",javascriptString);
        [self.webView loadHTMLString:javascriptString baseURL:[NSURL URLWithString:@""]];
        self.fakeView = nil;
    }else{
        [activityIndicator stopAnimating];
        self.webView.hidden=false;
    }
}
@end
#导入“ViewController.h”
@界面视图控制器()
@属性(强,非原子)ibuiwebview*fakeView;
@结束
@实现视图控制器
UIActivityIndicator视图*activityIndicator;
-(无效)viewDidLoad{
[超级视图下载];
//加载视图后,通常从nib执行任何其他设置。
activityIndicator=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[活动指示器停止设置动画];
[自述新闻];
}
-(无效)未收到记忆警告{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
-(作废)callDetailNews{
if([[Reachability reachabilityForInternetConnection]currentReachabilityStatus]!=NotReachable)
{
//文章链接::http://el3en.com/?articles=topic&topic=20840 (令牌ID)
// 
//NSString*someHTML=[webView stringByEvaluatingJavaScriptFromString:@“document.getElementsByClassName('box')[0].innerHTML;”;
NSString*articleString=[NSString stringWithFormat:@”http://el3en.com/?articles=topic&topic=%@",@"20840"];
NSURL*articleURL=[NSURL URLWithString:articleString];
n错误*错误;
NSString*articlePage=[NSString stringWithContentsOfURL:articleURL
编码:NSASCIIStringEncoding
错误:&错误];
NSLog(@“请求%@”,articleURL);
self.fakeView=[[UIWebView alloc]initWithFrame:CGRectMake(0,0,1024,768)];
self.fakeView.delegate=self;
[self.fakeView加载请求:[nsurlRequestRequestWithURL:articleURL]];
//NSString*someHTML=[[u webView stringByEvaluatingJavaScriptFromString:@“document.getElementsByClassName('topic_content')[0]。innerHTML;”];
//NSLog(@“Content:%@”,someHTML);
}
}
-(void)webView加载:(UIWebView*)webView{
[活动指示器启动激活];
self.webView.hidden=true;
}
-(void)webView:(UIWebView*)webView失败加载错误:(NSError*)错误{
NSLog(@“错误%@,[错误描述]);
}
-(无效)webViewDidFinishLoad:(UIWebView*)webView{
if(webView==self.fakeView){
NSString*javascriptString=[self.fakeView stringByEvaluatingJavaScriptFromString:@“document.getElementsByClassName('topic_content')[0].innerHTML”];
NSLog(@“%@”,javascriptString);
[self.webView loadHTMLString:javascriptString baseURL:[NSURL URLWithString:@”“];
self.fakeView=nil;
}否则{
[活动指示器停止设置动画];
self.webView.hidden=false;
}
}
@结束

您应该使用innerHtml而不是RHTML,除此之外,您还需要获取字符串并将该字符串加载到另一个Web视图中。请看例子

#import "ViewController.h"

@interface ViewController ()
@property (strong, nonatomic) IBOutlet UIWebView *fakeView;
@end

@implementation ViewController


UIActivityIndicatorView *activityIndicator;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    [activityIndicator stopAnimating];



    [self callDetailNews];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


-(void)callDetailNews{

    if ([[Reachability reachabilityForInternetConnection]currentReachabilityStatus]!=NotReachable)
    {
        // article link :: http://el3en.com/?articles=topic&topic=20840 (token_ID)

        // <td class="topic_content" colspan='6' itemprop="articleBody"  style="text-align:justify;  word-wrap: break-word; width:100%">

        // NSString *someHTML = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('box')[0].innerHTML;"];

        NSString *articleString = [NSString stringWithFormat:@"http://el3en.com/?articles=topic&topic=%@",@"20840"];

        NSURL *articleURL = [NSURL URLWithString:articleString];
        NSError *error;
        NSString *articlePage = [NSString stringWithContentsOfURL:articleURL
                                                         encoding:NSASCIIStringEncoding
                                                            error:&error];

        NSLog(@"Request %@",articleURL);
    self.fakeView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
        self.fakeView.delegate = self;
        [self.fakeView loadRequest:[NSURLRequest requestWithURL:articleURL]];

        //NSString *someHTML = [_webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('topic_content')[0].innerHTML;"];
        //NSLog(@"Content : %@",someHTML);
    }

}

- (void)webViewDidStartLoad:(UIWebView *)webView {
    [activityIndicator startAnimating];
    self.webView.hidden=true;
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    NSLog(@"error %@" ,[error description]);
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    if(webView == self.fakeView) {
        NSString* javascriptString = [self.fakeView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('topic_content')[0].innerHTML"];

        NSLog(@"%@",javascriptString);
        [self.webView loadHTMLString:javascriptString baseURL:[NSURL URLWithString:@""]];
        self.fakeView = nil;
    }else{
        [activityIndicator stopAnimating];
        self.webView.hidden=false;
    }
}
@end
#导入“ViewController.h”
@界面视图控制器()
@属性(强,非原子)ibuiwebview*fakeView;
@结束
@实现视图控制器
UIActivityIndicator视图*activityIndicator;
-(无效)viewDidLoad{
[超级视图下载];
//加载视图后,通常从nib执行任何其他设置。
activityIndicator=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[活动指示器停止设置动画];
[自述新闻];
}
-(无效)未收到记忆警告{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
-(作废)callDetailNews{
if([[Reachability reachabilityForInternetConnection]currentReachabilityStatus]!=NotReachable)
{
//文章链接::http://el3en.com/?articles=topic&to