我正在尝试使用Hpple包装器将网站中的数据转换为表格视图:https://github.com/topfunky/hpple。
在我看到的网站源代码中(这是相关部分):
<div id="traffic_content">
<marquee width="412" height="21" direction="right" scrollamount="3">
<a href="/Site/Traffic.aspx" id="ctl00_TrafficHolder">מעודכן לשעה: 16:40 בכביש תל אביב חיפה הישן, עומס תנועה ממחלף כפר סבא רעננה צפון עד מחלף הדרים, בגלל תנאונת דרכים. כביש מספר 70 עמוס מצומת אבליים עד צומת יבור. איילון דרום עמוס ממחלף רוקח עד מחלף לה גווארדיה. איילון צפון עמוס ממחלף חולון עד מחלף גלילות מזרח. *** שימו לב, בעלי זכות בחירה אשר יימצאו ביום הבחירות בישוב המרוחק למעלה מ-20 קילומטר מתחום השיפוט של הישוב בו ממוקם הקלפי בו הם אמורים להצביע, זכאים לנסיעה חינם בתחבורה הציבורית (אוטובוסים והרכבת).יש להציג תעודה מזהה ואת ההודעה לבוחר.(ממשו את זכותכם להצביע). למסירת ולקבלת דיווחים ותזמונים חייגו: 918 - 800 - 1-800 בנסיעה בקרבת בתי ספר, גינות משחקים ומתנ"סים – יש להוריד מהירות, גם כשהכביש פנוי. בהגיעכם למעבר חצייה – אפשרו תמיד חצייה לילד המבקש לחצות. היו דרוכים, ערניים ומרוכזים, וחפשו אתם את הילדים העשויים להתפרץ לכביש. עורך דיווחי התנועה:בני כבודי</a>
</marquee>
</div>
我很感兴趣将内容放到表格视图中。
所以我试过了:
NSURL *trafficUrl = [NSURL URLWithString:@"http://www.glgltz.co.il/Site/Traffic.aspx"];
NSData *trafficHtmlData = [NSData dataWithContentsOfURL:trafficUrl];
TFHpple *trafficParser = [TFHpple hppleWithHTMLData:trafficHtmlData];
NSString *trafficXpathQueryString = @"//div[@id='traffic_content']/a";
NSArray *trafficNodes = [trafficParser searchWithXPathQuery:trafficXpathQueryString];
NSMutableArray *newTraffic = [[NSMutableArray alloc] initWithCapacity:0];
for (TFHppleElement *element in trafficNodes){
Traffic *traffic = [[Traffic alloc] init];
[newTraffic addObject:traffic];
traffic.name = [[element firstChild] content];
}
然后将其加载到表视图的NSArray中。
当我调试代码时,我发现trafficNodes中有0个对象。
如何正确获取此数据?
答案 0 :(得分:1)
您忘记了XPath中的标记;)NSArray为空,因为没有"div[@id='traffic_content']/a"
尝试按如下方式修改它:
@"//div[@id='traffic_content']/marquee/a"
我尝试使用以下代码下载它,一切似乎都有效;)
//EDIT: //After converting trafficHtmlData the both the label and NSLog() show correct hebrew letters
NSData *trafficHtmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.glgltz.co.il/Site/Traffic.aspx"]];
NSString *trafficHTMLDataString = [[NSString alloc] initWithData:trafficHtmlData encoding:NSUTF8StringEncoding];
NSData *newData = [trafficHTMLDataString dataUsingEncoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsHebrew)];
if (trafficHtmlData != nil) {
TFHpple *trafficParser = [TFHpple hppleWithHTMLData:trafficHtmlData];
NSArray *trafficNodes = [trafficParser searchWithXPathQuery:@"//div[@id='traffic_content']/marquee/a"];
TFHppleElement *element = trafficNodes[0];
//EDIT: Convert the first element in trafficNodes
NSString *string = [element content];
[self.label setStringValue:string];
NSLog(@"%@", string);
/*
NSMutableArray *newTraffic = [[NSMutableArray alloc] initWithCapacity:0];
for (TFHppleElement *element in trafficNodes){
Traffic *traffic = [[Traffic alloc] init];
traffic.name = [[element firstChild] content];
[newTraffic addObject:traffic];
}
*/
}