Можно ли использовать .NET 3.5/4.0 для проверки элементов HTML в веб-браузере WinForm?
Возможно, используется интерфейс IHighlightRenderingServices или Html Agility Pack?
Я хотел бы, чтобы приложение функционировало как FireBug:
Просто наведите элемент, который вы хотите проверить с помощью мыши, и нажмите на него. В версиях Firebug до версии 1.7 это автоматически переключается на панель HTML и выбирает соответствующий элемент внутри Node View.
EDIT:
Ничего себе, я просто натолкнулся на http://www.selectorgadget.com/, что я и пытаюсь сделать. Это в Javascript и, просмотрев исходный код за последние 2 часа, я до сих пор не знаю, как включить его в мою программу...
Из того, что я могу сказать, он использует токенизацию и рекурсивный анализ элементов DOM для определения путей выбора CSS: http://www.selectorgadget.com/stable/lib/dom.js.
EDIT: Хорошо! Я загрузил selectorgadget в свое приложение. Он позволяет выбирать точно такие же элементы HTML, как Firebug! И даже создает запрос Xpath.
Однако я использую AxWebBrowser, и я зациклился на том, как заставить его работать с HtmlAgilityPack...
private void xpathQuery_Click(object sender, EventArgs e)
{
// Load Browser
HtmlWindow window = axWebBrowser1.Document.Window; // <---- 'object' does not contain a definition for 'Window'
string str = window.Document.Body.OuterHtml;
// Load HTML
HtmlAgilityPack.HtmlDocument HtmlDoc = new HtmlAgilityPack.HtmlDocument();
HtmlDoc.LoadHtml(str);
//Process Xpath Query
HtmlAgilityPack.HtmlNodeCollection Nodes = HtmlDoc.DocumentNode.SelectNodes(xpathText.Text);
//Print in Text box
foreach (HtmlAgilityPack.HtmlNode Node in Nodes)
{
richTextBox1.Text += Node.OuterHtml + "\r\n";
}
}
Edit: Я не мог заставить AxWebBrowser работать с HtmlAgilityPack, поэтому я просто использовал класс WebClient для загрузки URL-адреса, а затем проанализировал его с помощью HtmlAgilityPack.
Я просто закончил работу с веб-скребком. Он работает аналогично Visual Web Ripper и всем тем, кто стоит $1000 +.