Парсер HTML документа - C#
Формулировка задачи:
Доброго суток!
Есть необходимость парсить HTML для этих целей хотел использовать System.Net.WebRequest (можно указать настройки прокси). Но столкнулся с проблемой: на странице есть java script, формирующий основной контент. Естественно он не выполняется и в HTML не попадает нужная информация.
Пробовал через webBrowser1.Navigate (при этом прокси прописано в настройках систему), но прокся не пускает запрос просит авторизацию.
Прошу совета как лучше получить код HTML, в котором часть контента формируется скриптом.
Решение задачи: «Парсер HTML документа»
textual
Листинг программы
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private WebBrowser client;
private delegate void Del(string text);
public Form1()
{
InitializeComponent();
}
private void buttonStart_Click(object sender, EventArgs e)
{
client = new WebBrowser();
client.DocumentCompleted += Client_DocumentCompleted;
client.ScriptErrorsSuppressed = true;
client.Navigate("http://www.lexmark.com/ru_RU/common/mce-search.shtml?text=" + textBoxText.Text);
}
private async void Client_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
await Wait();
}
private Task Wait()
{
return Task.Run(async () =>
{
while ((HtmlElement)client.Invoke(new Func<HtmlElement>(() => client.Document.GetElementById("results-body"))) == null)
await Task.Delay(100);
textBoxHtml.Invoke(new Del((s) => textBoxHtml.Text = s), (string)client.Invoke(new Func<string>(() => client.Document.GetElementById("results-body").OuterHtml)));
});
}
}
}