Вывод в консоль содержимого сайта - C#
Формулировка задачи:
Доброго времени суток. Впервые пишу вопрос на форуме, поправляйте если что.
Ниже приведён текст программы которая обращается на устройство и считывает данные html которые в дальнейшем будут парситься. Программа работает, но с большим НО, на одной из "страничек" устройства один из div-ов заполняется при помощи js(или возможно, чего-то асинхронного, исходников у меня разумеется нет), вместо содержимого моя программа выводит код js. Через браузер само-собой всё-нормально.
Может кто сталкивался, подскажите пожалуйста или альтернативные варианты или то, как можно всё-таки получить уже "выполненную" страницу с заполненными div-ами. Заранее благодарю.
Для тех кто посоветует webbrowser, скажу, в окно он тоже не выполняет js, возможно какое-то ограничение на IE, но через сам браузер всё работает. И компонент webbrowser использовать не получится, потому-что в итоге программа должно через mono работать в консоли на линуксе (редком дистрибутиве raspbian). mono, потому-что wine установить туда не получится, уж больно не гибкий это дистрибутив.
Есть кто знает как подобную задачу выполнить на linux (уже согласен учить любой язык) тому просто респект до конца дней
public static void Main(string[] args) { Console.WriteLine("Hello World!"); String strURL = "http://192.168.1.55/view.htm?fl=00003.ITM"; HttpWebRequest objWebRequest; HttpWebResponse objWebResponse; StreamReader streamReader; String strHTML; objWebRequest = (HttpWebRequest)WebRequest.Create(strURL); objWebRequest.Method = "GET"; objWebResponse = (HttpWebResponse)objWebRequest.GetResponse(); streamReader = new StreamReader(objWebResponse.GetResponseStream(), System.Text.Encoding.Default ); //Console.OutputEncoding = Encoding.GetEncoding("cp866"); strHTML = streamReader.ReadToEnd(); streamReader.Close(); objWebResponse.Close(); objWebRequest.Abort(); Console.Write(strHTML);} Console.ReadKey(true); }
Решение задачи: «Вывод в консоль содержимого сайта»
textual
Листинг программы
using System; using System.Threading.Tasks; using System.Net.Http; using HtmlAgilityPack; namespace NameAndPrice { class Program { static void Main(string[] args) { Console.WriteLine("Please wait...\n"); ShowPrices().Wait(); Console.WriteLine("Done"); // Delay Console.ReadKey(); } private static async Task ShowPrices() { using (var client = new HttpClient()) { string html = await client.GetStringAsync("http://dila.ua/pricelist/"); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.LoadHtml(html); try { HtmlNodeCollection nodes = htmlDoc.DocumentNode.SelectSingleNode("//div[@id='4_2']").SelectSingleNode("//table//tbody").ChildNodes; foreach (var tr in nodes) { var tds = tr.ChildNodes; if (tds.Count == 4) { Console.WriteLine("Название: {0}", tds[0].InnerText); Console.WriteLine("Цена: {0}", tds[1].InnerText); } Console.WriteLine(""); } //Console.WriteLine(htmlDoc.DocumentNode.SelectSingleNode("//div[@id='4_2']").ChildNodes.Select(x => x.Name).Aggregate((a, b) => a + ", " + b)); } catch (Exception ex) { Console.WriteLine(ex.Message); return; } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д