Tôi đã phân tích cú pháp Html cho ứng dụng iOS của mình. Tôi đọc trên trang web mà tôi nên sử dụng Xpath và tôi tìm thấy thư viện TFHpple. Tôi thấy rằng thư viện này sử dụng XpathQueryPhân tích HTML trong mục tiêu C
<!DOCTYPE "html">
<html>
<head>
<meta property="og:site_name" content="Sito 4"/>
<meta property="og:title" content="home"/>
<meta name="viewport" content="width=320" />
<meta name="keywords" content="mobile website,microsite, mobdis,iphone,android" />
<meta name="description" content="Amazingly designed using MobDis.com" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="format-detection" content="telephone=no" />
<title>Sito 4/home</title>
<!--[if (!IE)|(gte IE 8)]><!-->
<link href="http://cdn2.mobdis.me/assets/publish-3.4-datauri.css" media="screen" rel="stylesheet" type="text/css" />
<!--<![endif]-->
<!--[if lte IE 7]>
<link href="http://cdn2.mobdis.me/assets/publish-3.4.css" media="screen" rel="stylesheet" type="text/css" />
<![endif]-->
<script type="text/javascript"></script>
<style type="text/css">
body{
background-color: black;
}
</style>
</head>
<body>
<div id='processingScreen' style="width:320px;height:417px;background-color:rgb(0, 0, 128)"><img alt="Publish_loading" src="http://cdn2.mobdis.me/pro_images/publish_loading.gif" style="max-width:100%;max-height:100%;" />
</div>
<div data-role="page" id="home" data-id="94568">
<div data-role="content" id="area" class="canvas" style="width:320px;height:417px;background-color:rgb(0, 0, 128)">
<div id="text-1" data-name="text-1" class="drsElement drsMoveHandle unselectable parentDef" data-content="text" style="width: 320px; height: 50px; top: 0px; left: 0px; z-index: 1; overflow: visible; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; -webkit-box-shadow: rgb(255, 255, 255) 0px 2px 0px inset; "><div style="width: 320px; height: 50px; background-color: transparent; border-color: rgb(112, 150, 171); border-width: 2px; border-style: none none solid; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(181, 221, 242)), to(rgb(181, 221, 242))); " class="txtDef childDef editable" data-pageid="" data-pageurl="" data-exlink="" data-transition="0" id="text-1_content" title="text-1" data-allborderradius="unchecked"><div>
</div>
<div>
<span style="color:#ffffff;"><span style="font-family: futura; "><span style="font-size: 26px; "><span style="text-shadow: rgba(0, 0, 0, 0.59375) 1px 1px 2px; "><strong>Sito 4</strong></span></span></span></span></div>
</div></div><div id="image-1" data-name="image-1" class="drsElement drsMoveHandle unselectable parentDef" data-content="image" style="width: 320px; height: 169px; top: 48px; left: 0px; z-index: 2; " data-src="assets/promozioni.png"><img src="http://cdn2.mobdis.me/uploads/73005/original.png?1375193775" style="width: 320px; height: 169px; " data-pageid="" data-pageurl="" data-exlink="" data-transition="0" id="image-1_content" title="image-1" class="childDef"></div><div id="text-2" data-name="text-2" class="drsElement drsMoveHandle unselectable parentDef" data-content="text" style="width: 320px; height: 100px; top: 277px; left: 0px; z-index: 3; overflow: visible; "><div style="width: 320px; height: 100px; " class="txtDef childDef editable" data-pageid="" data-pageurl="" data-exlink="" data-transition="0" id="text-2_content" title="text-2"><div>
<span style="color:#ffffff;"><span style="font-size: 20px; "><strong>Complimenti hai ottenuto una fantastica promozione!</strong></span></span></div>
</div></div>
<div id="text-3" data-name="text-3" class="drsElement drsMoveHandle unselectable parentDef" data-content="text" style="width: 320px; height: 65px; top: 332px; left: 0px; z-index: 4; overflow: visible; "><div style="width: 320px; height: 65px; " class="txtDef childDef editable" data-pageid="" data-pageurl="" data-exlink="" data-transition="0" id="text-3_content" title="text-3"><div style="text-align: left; ">
<span style="font-size:12px;"><span style="color: rgb(255, 255, 255); ">Scadenza: 29 Ago 2013</span></span></div>
</div></div>
</div>
</div>
<div id="divAds"><a href="http://www.mobdis.com" target="_blank"><img alt="Banner" src="http://cdn2.mobdis.me/pro_images/banner.png" style="display:inline;max-width:100%;" /></a></div>
<div id="divBrowserAlert">The current version of your browser is not supported yet. To ensure full functionality, we recommend using Apple Safari or Google Chrome.<br/>
<button onclick="dismissUnsupportedBrowser('')">Dismiss</button>
<!--<button onclick=window.location = "";">Redirect</button>-->
</div>
<script type="text/javascript">
</script>
<script type="text/javascript">
var mpq = [];
mpq.push(["init", '5fed56e1e4a85990c0fb6ff5294d2d42']);
(function(){var b,a,e,d,c;b=document.createElement("script");b.type="text/javascript";b.async=true;b.src=(document.location.protocol==="https:"?"https:":"http:")+"//api.mixpanel.com/site_media/js/api/mixpanel.js";a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(b,a);e=function(f){return function(){mpq.push([f].concat(Array.prototype.slice.call(arguments,0)))}};d=["init","track","track_links","track_forms","register","register_once","identify","name_tag","set_config"];for(c=0;c<d.length;c++){mpq[d[c]]=e(d[c])}})();
mpq.track("project_id-13003");
mpq.name_tag('mobdis');
</script>
<div id="scriptImports">
<script src="http://cdn2.mobdis.me/assets/jq-3.4.js" type="text/javascript"></script>
<script src="http://cdn2.mobdis.me/assets/publish-3.4.js" type="text/javascript"></script>
<script src="http://cdn2.mobdis.me/assets/jqm-3.4.js" type="text/javascript"></script>
<!-- -->
<script type="text/javascript">
var root = "http://sito4.mobdis.co/";
var cdn_link = "http://cdn2.mobdis.me/";
var require_passcode = false;
var showWaterMark = false;
var showNone = false;
</script>
</div>
<div id="divAutho" class="autho_56930"></div>
<div id="restrictMode" class="divBasic"></div>
<noscript style="color:red;font-size:1em;top:0px;left:0px;position:absolute;display:block;background: #363636;color:#fbb041;height:100%;text-align:center;">Javascript is disabled in your browser.<br /> Please enable the javascript.</noscript>
</body>
</html>
Tôi thú vị trong hai thông tin về html này:
này
<title>Sito 4/home</title>
này
<span style="color: rgb(255, 255, 255); ">Scadenza: 29 Ago 2013</span>
Đối bây giờ tôi đã viết mã này:
- (void)loadDataFromHtml {
NSURL *url = [NSURL URLWithString:stringUrl];
NSData *data = [NSData dataWithContentsOfURL:url];
TFHpple *parser = [TFHpple hppleWithHTMLData:data];
NSString *XpathQueryStringTitle = @"//title";
NSArray *nodes = [parser searchWithXPathQuery:XpathQueryStringTitle];
NSMutableArray *dataArray = [[NSMutableArray alloc]initWithCapacity:0];
for (TFHppleElement *element in nodes) {
HtmlData *htmlData = [[HtmlData alloc]init];
[dataArray addObject:htmlData];
htmlData.title = [[element firstChild]content];
htmlTitle = htmlData.title;
htmlTitle = [htmlTitle substringToIndex:6];
htmlTitle = [htmlTitle stringByReplacingOccurrencesOfString:@" " withString:@""];
}
}
(Dựa trên hướng dẫn này: http://www.raywenderlich.com/14172/how-to-parse-html-on-ios)
Bây giờ câu hỏi của tôi là làm thế nào tôi có thể tìm thấy thông tin thứ hai tôi cần? Tôi có nên thực hiện một NSString khác để lấy thông tin thứ hai không? Bạn có thể giúp tôi giải quyết vấn đề này không? Cảm ơn bạn
Vâng, cách dễ nhất là để thực hiện một 'XpathQueryStringTitle' với xpath đến các yếu tố mà bạn muốn. Bạn có thể sử dụng cùng một trình phân tích cú pháp và cùng một dữ liệu html;) – HAS
Cách lấy URL hình ảnh bằng cách sử dụng mã trên? Tôi có tiêu đề. Nhưng tôi cũng cần URL hình ảnh. – Parthpatel1105