如何获取网站的HTML内容

时间:2012-06-07 01:59:13

标签: ios uiwebview html-parsing xcode4.3

viewDidLoad,我正在使用NSURLRequestNSURLConnection

NSURLRequest *site_request = 
    [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"] 
                     cachePolicy:NSURLRequestUseProtocolCachePolicy 
                 timeoutInterval:10.0];

NSURLConnection *site_connection = 
    [[NSURLConnection alloc] initWithRequest:site_request delegate:self];

然后我用

-(void)connection:(NSURLConnection *)site_connection didReceiveData:(NSData *)data 
{    
    site_response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

我在site_response中拥有完整的HTML。

我想创建一个不可见的UIWebView,它将从NSURLRequest“打开”页面,以便使用JavaScript获取这样的内容:

NSString *myText = [my_webView stringByEvaluatingJavaScriptFromString:
                       @"document.documentElement......"];

在我的.h我有:

UIWebView *my_webview;
@property (nonatomic, retain) UIWebView *my_webview;

在我的.m中我有:

@synthesize torrents_webview;

viewDidLoad之后我的NSURLRequest

[my_webview loadRequest:site_request];

我用

-(void)webViewDidFinishLoad:(UIWebView *)webView 
{
    //an alertview here
}

以确保它有效。但没有任何反应。它没有提供警报视图。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

webViewDidFinishLoad:是UIWebView委托的一种方法。您没有在您显示的代码中的任何位置设置委托。

@interface YourClass : UIViewController <UIWebViewDelegate>

...

- (void)loadView
{
    self.webView.delegate = self;
}


...
- (void)dealloc
{
    self.webView.delegate = nil;
}

此外,如果您使用NSURLRequest,您将再次获取该页面。但是没有必要使用NSURLConnection,只需直接使用NSURLRequest加载UIWebVIew。

或者,如果必须使用NSURLConnection,则在文件下载后将其保存到磁盘并使用LoadHTMLString加载内容。

答案 1 :(得分:0)

ViewController.h

@interface TopTorrents_ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource,UIWebViewDelegate>
{
    UIWebView *torrents_webview;
}

@property (nonatomic, retain) UIWebView *torrents_webview;

ViewController.m

    @synthesize torrents_webview;

- (void)viewDidLoad
{       
    torrents_webview.delegate = self;

    NSURLRequest *site_request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.gr/"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0];

    [torrents_webview loadRequest:site_request];  

    [super viewDidLoad];
}

    -(void)webViewDidFinishLoad:(UIWebView *)webView 
    {
        NSString *myText = [torrents_webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0]"];

    UIAlertView *my_alert = [[UIAlertView alloc] initWithTitle:@"mytitle" message:myText delegate:nil cancelButtonTitle:@"my button" otherButtonTitles:nil,nil];

    [my_alert show];

}

这是我更新的代码...谢谢