Objective c 如何在iPhone的WebView中获取加载的HTML页面的内容
我有一个应用程序,我将不得不获得加载的webView的数据,我如何才能得到它? 让我详细解释一下: 1) 我有一个链接“www.google.com” 2) 我输入了关键字'question'并生成了如下链接:, 3) 使用上述URL创建请求后,我在WebView中打开Objective c 如何在iPhone的WebView中获取加载的HTML页面的内容,objective-c,parsing,uiwebview,Objective C,Parsing,Uiwebview,我有一个应用程序,我将不得不获得加载的webView的数据,我如何才能得到它? 让我详细解释一下: 1) 我有一个链接“www.google.com” 2) 我输入了关键字'question'并生成了如下链接:, 3) 使用上述URL创建请求后,我在WebView中打开 NSString * urlStr = [NSString stringWithFormat:@"https://www.google.co.in/#hl=en&sclient=psy-ab&q
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实现的,它接受关键字并给出响应,然后用通用的方法对其进行解析。因此,请提出不同的建议。以下是我解决问题的方法,可能有助于寻找问题的人
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);
searchResultsArray=[[NSMutableArray alloc]init];
NSString*html=[webView stringByEvaluatingJavaScriptFromString:@“document.getElementById('ires').innerHTML”];
NSLog(@“html:%@”,html);
NSData*data=[html数据使用编码:NSUTF8StringEncoding];
TFHpple*doc=[[TFHpple alloc]initWithHTMLData:data];
NSArray*elements=[docsearchwithxpathquery:@//ol[@id='rso']/li[@class='g']]”;
如果([nextPageLinkArray计数]==0 | |(当前页面!=0&¤t页面==[nextPageLinkArray计数]-1))
{
NSString*HTMLINKS=[webView stringByEvaluatingJavaScriptFromString:@“document.getElementById('nav').innerHTML”];
NSLog(@“htmlinks:%@”,htmlinks);
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计数]);
对于(int i=0;i可能重复的Thank@HAS,它帮助meNSData*data;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']/div[@id='center\u col']/div[@class='med']/div[@id='search']/div[@id='ires']/ol[@id='rso']];//NSArray*元素=[doc searchWithXPathQuery:@](document.getElementsByTagName('html')[0].innerHTML)];NSLog(@“元素:%@”,elements);尝试了绝对路径和相对路径。但节点总是为零。最有可能的是,您的xpath是错误的。我将在几个小时内对此进行研究。对不起……这是正确的路径,[doc searchWithXPathQuery:@/html[1]/body[1]/div[@id='main']/div[@id='rcnt']/div[@id='center\col']/div[@id='res']/div[@id='search']/div[@id='ires']/ol[@id='rso']"]