2015-04-18 3 views
0

Я хочу сделать приложение для настольных приложений на C#. Я хочу, чтобы он вытащил погоду с weather.com. Я очень новичок в этом вопросе. Я использую HtmlAgilityPack.dll. Я попытался следующий код, чтобы тянуть сегодняшнюю погоду (градусы):Как вы можете вытаскивать строки с веб-страницы и отображать их?

string webUrl = "http://www.weather.com/weather/today/l/90025:4:US"; 
HtmlWeb HTMLweb = new HtmlWeb(); 
HtmlAgilityPack.HtmlDocument doc = HTMLweb.Load(webUrl); 
string degrees = doc.DocumentNode.SelectNodes("//*[@id=\"wx-local-wrap\"]/div[2]/div[2]/div/div/div/div/section/div/div/div[1]/div/section/section[1]/div[2]/span[1]/span")[0].InnerText; 
MessageBox.Show("{0}°F", degrees); 

Однако, когда я запускаю этот код он бросает NullReferenceException. Что я делаю неправильно и как я могу это исправить?

спасибо.

+3

Очевидно ваш узел не может быть найден –

+0

вы проверили значение «документа» после того, как он назначен? Узел, который вы ищете, не должен быть там. Подумайте об использовании публичного API вместо этого, есть много, которые возвратят вам форматированный XML-документ, который вы сможете проанализировать. –

+0

Пожалуйста, покажите содержимое HTML, которое вы хотите найти. –

ответ

2

Обработка таких веб-страниц, как это, является исчерпывающей задачей, и любые изменения на веб-странице ее разработчиками окажут ваше приложение бесполезным.

Поэтому для получения данных о погоде используйте XML или API. Это может быть хорошим местом для начала:

http://openweathermap.org/current

Он поддерживает XML и JSON, где вы предоставляете такие параметры, как CityId, CITYNAME или через географические координаты и возвращает результаты в ясном структурированных XML легко разобрать с помощью XmlReader

Надеется, что помогли :)