2013-04-02 2 views
0

У меня есть приложение, в котором мне нужно будет получить данные LOADED webView, как я могу это получить? Позвольте мне объяснить это в деталях:Как получить содержимое загруженной страницы HTML в WebView iPhone

1) У меня есть ссылка 'www.google.com'

2) Я вошел ключевое слово 'вопрос' и генерируется ссылка, как, https://www.google.co.in/#hl=en&sclient=psy-ab&q=%@&oq=question&gs_l=serp.3..0i10l4.90108.93059.2.93802.10.8.2.0.0.0.171.1173.0j8.8.0...0.0...1c.1.8.psy-ab.6SJ9cs6717Q&pbx=1&bav=on.2,or.r_cp.r_qf.&fp=27feaf18f129334d&biw=1901&bih=383

3) после создания запроса с указанным выше URL-адресом я откроюсь в WebView.

 NSString * urlStr = [NSString stringWithFormat:@"https://www.google.co.in/#hl=en&sclient=psy-ab&q=%@&oq=question&gs_l=serp.3..0i10l4.90108.93059.2.93802.10.8.2.0.0.0.171.1173.0j8.8.0...0.0...1c.1.8.psy-ab.6SJ9cs6717Q&pbx=1&bav=on.2,or.r_cp.r_qf.&fp=27feaf18f129334d&biw=1901&bih=383"]; 
     NSURL * gotoUrl = [NSURL URLWithString:urlStr]; 
     NSURLRequest * requestP = [NSURLRequest requestWithURL:gotoUrl cachePolicy:NSURLCacheStorageAllowed timeoutInterval:60]; 
     [webVw loadRequest:requestP]; 

4) Я получил некоторые результаты поиска, загруженные в WebView,

5) Теперь я хочу, чтобы разобрать эти результаты, чтобы получить приведенные ссылки, описание и т.д. ....

Как может Я получаю данные, загруженные в WebView? пожалуйста, предложите правильный путь, Я сделал это с помощью API поиска Google, который берет ключевое слово и дает ответ, а затем разбираю его с помощью общедоступных методов. поэтому, пожалуйста, предложите что-то другое.

+1

Возможный дубликат http://stackoverflow.com/questions/992348/reading-html-content-from-a-uiwebview – HAS

+1

Благодарности @HAS, она помогает мне – bhavin

+0

NSData * данные; data = [page dataUsingEncoding: NSUTF8StringEncoding]; TFHpple * doc = [[TFHpple alloc] initWithHTMLData: data]; NSArray * elements = [doc searchWithXPathQuery: @ "/ html [1]/body [1]/div [@ id = 'main']/div/div [@ class = 'mw']/div [@ id = 'rcnt']/дел [@ ид = 'center_col']/дел [@ класс = 'мед']/дел [@ ид = 'поиск']/дел [@ ид = 'IRES']/ол [@ ид = 'RSO'] "]; // NSArray * elements = [doc searchWithXPathQuery: @ "(document.getElementsByTagName ('html') [0] .innerHTML)"]; NSLog (элементы @ ":% @", элементы); Пробовал это по абсолютному и относительному пути .. но узел всегда ниль – bhavin

ответ

0

Вот как мне удается решить проблему, может помочь кому-то ее найти.

searchResultsArray = [[NSMutableArray alloc]init]; 
       NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('ires').innerHTML"];    
       NSLog(@"html:%@",html); 
       NSData *data = [html dataUsingEncoding:NSUTF8StringEncoding]; 
       TFHpple * doc  = [[TFHpple alloc] initWithHTMLData:data]; 
       NSArray * elements = [doc searchWithXPathQuery:@"//ol[@id='rso']/li[@class='g']"]; 
       if ([nextPageLinkArray count] == 0 || (current_page !=0 && current_page == [nextPageLinkArray count]-1)) 
       {      
        NSString *htmlLinks = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('nav').innerHTML"];       
        NSLog(@"htmlLinks:%@",htmlLinks); 
        NSData *dataLinks = [htmlLinks dataUsingEncoding:NSUTF8StringEncoding]; 
        TFHpple * docLinks  = [[TFHpple alloc] initWithHTMLData:dataLinks]; 
        NSArray * linksArr = [docLinks searchWithXPathQuery:@"//tbody/tr/td/a[@class='fl']"]; 
        NSLog(@"cnt:%d", [linksArr count]); 
        for (int i=0; i<[linksArr count]; i++) 
        { 
         NSMutableDictionary * temPdict = [[NSMutableDictionary alloc]init];              
         TFHppleElement * element3 = [linksArr objectAtIndex:i]; 
         NSString * url = [element3 objectForKey:@"href"]; 
         [temPdict setValue:url forKey:@"next_url"]; 

         NSString * pageNo = [element3 text]; 
         [temPdict setValue:pageNo forKey:@"page_no"]; 
         [nextPageLinkArray addObject:temPdict]; 
        } 

       } 
       NSLog(@"nextPageLinks:%@",nextPageLinkArray); 
       [searchResultsArray removeAllObjects]; 
       for (int i=0; i<[elements count]; i++) 
       { 
        NSMutableDictionary * temPdict = [[NSMutableDictionary alloc]init]; 

        TFHppleElement * element = [elements objectAtIndex:i]; 
        NSArray * childerens_VSC = [element childrenWithClassName:@"vsc"]; 
        if ([childerens_VSC count]==0) 
        { 
         continue; 
        } 

        TFHppleElement * element1 = [childerens_VSC objectAtIndex:0]; 
        NSArray * childerens_R = [element1 childrenWithClassName:@"r"]; 
        //NSLog(@"childrenArr:%@",childrenArr); 

        TFHppleElement * element2 = [childerens_R objectAtIndex:0]; 
        NSArray * childerens_L = [element2 childrenWithClassName:@"l"]; 
        //NSLog(@"childrenArr1:%@",childrenArr1); 

        TFHppleElement * element3 = [childerens_L objectAtIndex:0]; 

        NSString * url = [element3 objectForKey:@"href"]; 
        [temPdict setValue:url forKey:@"url"]; 

        //cite 
        NSArray * childrens_S = [element1 childrenWithClassName:@"s"]; 
        TFHppleElement * element5 = [childrens_S objectAtIndex:0]; 
        NSArray * childrens_F_KV = [element5 childrenWithClassName:@"f kv"]; 

        TFHppleElement * element6 = [childrens_F_KV objectAtIndex:0]; 
        NSArray * arr = [element6 childrenWithTagName:@"cite"]; 
        TFHppleElement * element7 = [arr objectAtIndex:0]; 
        NSString * cite = [element7 text]; 
        NSLog(@"cite:%@",cite); 
        [temPdict setValue:cite forKey:@"cite"]; 
        [searchResultsArray addObject:temPdict]; 
       } 

       NSLog(@"searchResults:%@",searchResultsArray);