Парсер HTML документа - C#

Узнай цену своей работы

Формулировка задачи:

Доброго суток! Есть необходимость парсить HTML для этих целей хотел использовать System.Net.WebRequest (можно указать настройки прокси). Но столкнулся с проблемой: на странице есть java script, формирующий основной контент. Естественно он не выполняется и в HTML не попадает нужная информация. Пробовал через webBrowser1.Navigate (при этом прокси прописано в настройках систему), но прокся не пускает запрос просит авторизацию. Прошу совета как лучше получить код HTML, в котором часть контента формируется скриптом.

Решение задачи: «Парсер HTML документа»

textual
Листинг программы
  1. using System;
  2. using System.Threading.Tasks;
  3. using System.Windows.Forms;
  4.  
  5. namespace WindowsFormsApplication1
  6. {
  7.     public partial class Form1 : Form
  8.     {
  9.         private WebBrowser client;
  10.         private delegate void Del(string text);
  11.  
  12.         public Form1()
  13.         {
  14.             InitializeComponent();
  15.         }
  16.  
  17.         private void buttonStart_Click(object sender, EventArgs e)
  18.         {
  19.             client = new WebBrowser();
  20.  
  21.             client.DocumentCompleted += Client_DocumentCompleted;
  22.             client.ScriptErrorsSuppressed = true;
  23.  
  24.             client.Navigate("http://www.lexmark.com/ru_RU/common/mce-search.shtml?text=" + textBoxText.Text);
  25.         }
  26.  
  27.         private async void Client_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
  28.         {
  29.             await Wait();
  30.         }
  31.  
  32.         private Task Wait()
  33.         {
  34.             return Task.Run(async () =>
  35.             {
  36.                 while ((HtmlElement)client.Invoke(new Func<HtmlElement>(() => client.Document.GetElementById("results-body"))) == null)
  37.                     await Task.Delay(100);
  38.                 textBoxHtml.Invoke(new Del((s) => textBoxHtml.Text = s), (string)client.Invoke(new Func<string>(() => client.Document.GetElementById("results-body").OuterHtml)));
  39.             });
  40.         }
  41.     }
  42. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы