所以,我使用谷歌favicons得到网站的图像。
但我不明白如何获得网页的标题和描述。
我认识一个好的图书馆URLEmbeddedView
,它很棒!
但我想写自己的。
我在stackoverflow上发现了许多类似的问题,但没有答案描述如何在没有UIWebView
的情况下获取网站标题。
答案 0 :(得分:1)
使用stock API,您可以执行以下操作:
- (void)getSiteHtml
{
NSURLSession *session = NSURLSession.sharedSession;
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.stackoverflow.com"]
completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *htmlString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"http string: %@", htmlString);
}];
[dataTask resume];
}
此代码当然应该在后台会话中运行。
对于StackOverflow,您将获得这样的字符串:
<!DOCTYPE html>
<html>
<head>
<title>Stack Overflow</title>
<link rel="shortcut icon" href="//cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d">
<link rel="apple-touch-icon image_src" href="//cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon.png?v=c78bd457575a">
<link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml">
<meta name="twitter:card" content="summary">
<meta name="twitter:domain" content="stackoverflow.com"/>
<meta property="og:type" content="website" />
<meta property="og:image" itemprop="image primaryImageOfPage" content="http://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon@2.png?v=73d79a89bded&a" />
<meta name="twitter:title" property="og:title" itemprop="title name" content="Stack Overflow" />
<meta name="twitter:description" property="og:description" itemprop="description" content="Q&A for professional and enthusiast programmers" />
<meta property="og:url" content="http://stackoverflow.com/"/>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="//cdn.sstatic.net/Js/stub.en.js?v=b84e3ec1d0b3"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/stackoverflow/all.css?v=ef9c49b839e0">
<link rel="alternate" type="application/atom+xml" title="Feed of recent questions" href="/feeds">
<script>
然后,您必须解析字符串,尤其是<head>
部分,以查找<title>
条目,<link >
到shortcut icon
和<meta>
{ {1}}获取所需信息,无需UIWebView。
例如,可以使用XML解析器完成。
答案 1 :(得分:0)
您可以使用API调用网页获取HTML字符串。使用一些third party AP I来解析HTML字符串并收集所需信息。
NSURL *URL = [NSURL URLWithString:@"http://stackoverflow.com/questions/39526606/objective-c-how-can-i-get-title-and-description-of-website-without-using-uiw"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSString* htmlString = [operation responseString]
// parse HTML string to gather required information.
}