У меня есть приложение, которое тянет изображение и отображает его в UIImageView. У меня есть код, который, как я знаю, работает для вытягивания изображений, поэтому я думаю, что он должен что-то делать с HTML. Я тройную проверку всех соединений в xcode и все подключены. Если бы вы могли сказать мне, почему изображение не тянет, это было бы здорово! Я тяну с этого веб-сайта, если вы хотите взглянуть на весь HTML самостоятельно, но я хочу изображение "Прямо сейчас".
Код для вывода изображения:
- (void)viewDidLoad {
[super viewDidLoad];
self.urlForFeelsLike = @"http://www.weather.com/weather/today/CAXX0518:1:CA";
NSURL *myURL2 = [NSURL URLWithString: [self.urlForFeelsLike stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURLRequest *request2 = [NSURLRequest requestWithURL:myURL2];
[webViewForFeelLike loadRequest:request2];
webViewForFeelLike.delegate = self;
timer1 = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(loadImageForCurrentCondition) userInfo:nil repeats:YES];
}
-(void)loadImageForCurrentCondition {
js = @"document.getElementsByClassName('wx-weather-icon')[0].src;";
imgLink = [webViewForFeelLike stringByEvaluatingJavaScriptFromString:js];
imgURL = [NSURL URLWithString:imgLink];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
data = [NSData dataWithContentsOfURL:imgURL];
[self performSelectorOnMainThread:@selector(setImageViewImage) withObject:data waitUntilDone:YES];
});
}
- (void)setImageViewImage {
imgData = [NSData dataWithContentsOfURL:imgURL];
image = [UIImage imageWithData:imgData];
dispatch_async(dispatch_get_main_queue(),^{
if (image == nil) {
}
else {
[currentConditionImageView setImage:image];
}
});
NSLog(@"Weather image reloaded");
}
HTML-строка, из которой я берусь:
<div class="wx-data-part wx-first"><img src="http://s.imwx.com/v.20131006.214956/img/wxicon/120/26.png" height="120" width="120" alt="Cloudy" class="wx-weather-icon">
Ваш JavaScript неправильный.
document.getElementsByClassName('wx-weather-icon') //Always returns an array, so you want:
document.getElementsByClassName('wx-weather-icon')[0].src;
С другой стороны:
dcorbatta также находится ниже, вы используете UIWebView неправильно здесь. Кроме того, если вы используете UIWebView только для получения этого изображения, вы делаете это очень медленно, излишне интенсивно. UIWebView тратит много средств на воспроизведение и анализ (он предназначен для просмотра), когда что-то более простое будет выполнять тот же подвиг быстрее и эффективнее. Я бы рекомендовал загрузить страницу в виде строки HTML и вместо этого разбор этой строки.
As i have seen the link you gave. i Checked the css&HTML of the link the are not using the "Rightnow" image. with our web view we can create backgrounds. and you css code is good it is loading cloud image exactly.
i used the link [link]http://s.imwx.com/v.20131006.214956/img/wxicon/120/26.png where this is a cloud image.. go to w3schools site and type/paste
[ссылка] http://www.w3schools.com/css/tryit.asp?filename=trycss_default
Почему вы используете NSTimer? Вы можете использовать метод делегирования WebView: webViewDidFinishLoad:
И почему вы извлекаете URL-адрес изображения из html? Изображение src изменится в ближайшем будущем?