Ios 如何获取网站的HTML内容

Ios 如何获取网站的HTML内容,ios,uiwebview,html-parsing,xcode4.3,Ios,Uiwebview,Html Parsing,Xcode4.3,在viewDidLoad中,我正在使用NSURLRequest和NSURLConnection: NSURLRequest *site_request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"] cachePolicy:NSURLRequestUseProtocolCachePolicy tim

viewDidLoad
中,我正在使用
NSURLRequest
NSURLConnection

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\u 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
}
为了确保它能正常工作。但什么也没发生。它不提供警报视图


我做错了什么?

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

@interface YourClass : UIViewController <UIWebViewDelegate>

...

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


...
- (void)dealloc
{
    self.webView.delegate = nil;
}
@接口YourClass:UIViewController
...
-(void)负荷视图
{
self.webView.delegate=self;
}
...
-(无效)解除锁定
{
self.webView.delegate=nil;
}
此外,如果使用NSURLRequest,您将再次获得该页面。但是不需要使用NSURLConnection,只需直接使用NSURLRequest加载UIWebVIew即可


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

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

@interface YourClass : UIViewController <UIWebViewDelegate>

...

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


...
- (void)dealloc
{
    self.webView.delegate = nil;
}
@接口YourClass:UIViewController
...
-(void)负荷视图
{
self.webView.delegate=self;
}
...
-(无效)解除锁定
{
self.webView.delegate=nil;
}
此外,如果使用NSURLRequest,您将再次获得该页面。但是不需要使用NSURLConnection,只需直接使用NSURLRequest加载UIWebVIew即可

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

ViewController.h

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

@property (nonatomic, retain) UIWebView *torrents_webview;
这是我的更新代码。。。谢谢

ViewController.h

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

@property (nonatomic, retain) UIWebView *torrents_webview;


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

谢谢您的回答,我按照您的建议添加了两次委托,但都不起作用,我没有添加-(void)dealloc{self.webView.delegate=nil;}我可以避免NSURLConnection,但在viewDidLoad创建NSURLRequest时告诉我一些事情,它会立即获取页面内容??创建NSURLConnection不会得到任何结果,但您正在将请求传递给NSURLConnection,当您启动它时,它将获得请求(我假设您正在执行此操作,但没有显示下一行,否则为什么要有NSURLConnection?)好的,我删除了NSURL连接,我知道它不需要在那里,谢谢。可能我遗漏了“启动时将获得请求”部分,您是否仍有问题?发布您最新代码的更新谢谢您的回答,我按照您的建议添加了两次委托,但都不起作用,我没有添加-(void)dealloc{self.webView.delegate=nil;}我可以避免NSURLConnection,但在viewDidLoad创建NSURLRequest时告诉我一些事情,它会立即获取页面内容??创建NSURLConnection不会得到任何结果,但您正在将请求传递给NSURLConnection,当您启动它时,它将获得请求(我假设您正在执行此操作,但没有显示下一行,否则为什么要有NSURLConnection?)好的,我删除了NSURL连接,我知道它不需要在那里,谢谢。可能我遗漏了“启动时将获得请求”部分,您是否仍有问题?发布您最新代码的更新您在哪里创建UIWebView?我在哪里创建它是什么意思?在ViewController.h我有这两行,在ViewController.m我试图“告诉”它要访问哪个站点。我不想“查看”webview,我希望它加载一个站点并被隐藏。Objective-C中的对象必须在某处创建,然后才能使用alloc或Interface Builder使用。由于您的torrents\u webview没有IBOutlet,我想您没有使用Interface Builder吧?所以我的问题是,你在哪里调用alloc来创建torrents\u webview?让我问另一个问题,在viewDidLoad中,如果您在调试器中查看torrents_webview或在NSLog中查看它,它的值是多少。换句话说,它是否为零?我添加了CGRect webFrame=[[UIScreen mainScreen]applicationFrame];torrents_webview=[[UIWebView alloc]initWithFrame:webFrame];解决了我的问题,谢谢!如果你能接受这个答案,如果它有帮助的话,我将不胜感激。你在哪里创建UIWebView?我在哪里创建它是什么意思?在ViewController.h我有这两行,在ViewController.m我试图“告诉”它要访问哪个站点。我不想“查看”webview,我希望它加载一个站点并被隐藏。Objective-C中的对象必须在某处创建,然后才能使用alloc或Interface Builder使用。由于您的torrents\u webview没有IBOutlet,我想您没有使用Interface Builder吧?所以我的问题是,你在哪里调用alloc来创建torrents\u webview?让我问另一个问题,在viewDidLoad中,如果您在调试器中查看torrents_webview或在NSLog中查看它,它的值是多少。换句话说,它是否为零?我添加了CGRect webFrame=[[UIScreen mainScreen]applicationFrame];torrents_webview=[[UIWebView alloc]initWithFrame:webFrame];解决了我的问题,谢谢!如果你能接受这个答案,如果它有帮助的话,我将不胜感激。