Как получить координаты HTML-элемента с помощью C #? - PullRequest
1 голос
/ 10 октября 2009

Я планирую разработать веб-сканер, который будет извлекать координаты HTML-элементов из веб-страниц. Я обнаружил, что можно получить координаты html-элемента с помощью сборки "mshtml". Прямо сейчас Я хотел бы знать, возможно ли это и как получить только необходимую информацию (html, css) с веб-страницы, а затем с помощью соответствующих классов mshtml получить правильные координаты всех элементов HTML

Спасибо!

Ответы [ 2 ]

2 голосов
/ 13 ноября 2009

Я использую эти функции c # для определения позиций элементов. Вам необходимо передать ссылку на рассматриваемый элемент HTML.

public static int findPosX( mshtml.IHTMLElement obj ) 
{
  int curleft = 0;
  if (obj.offsetParent != null ) 
  {
    while (obj.offsetParent != null ) 
    {
      curleft += obj.offsetLeft;
      obj = obj.offsetParent;
    }
  } 

  return curleft;
}

public static int findPosY( mshtml.IHTMLElement obj ) 
{
  int curtop = 0;
  if (obj.offsetParent != null ) 
  {
    while (obj.offsetParent != null ) 
    {
      curtop += obj.offsetTop;
      obj = obj.offsetParent;
    }
  } 

  return curtop;
}

Я получаю элементы HTML из текущего документа следующим образом:

// start an instance of IE
public SHDocVw.InternetExplorerClass ie;
ie = new SHDocVw.InternetExplorerClass();
ie.Visible = true;

// Load a url
Object Flags = null, TargetFrameName = null, PostData = null, Headers = null;
ie.Navigate( url, ref Flags, ref TargetFrameName, ref PostData, ref Headers );

while( ie.Busy )
{
  Thread.Sleep( 500 );
}

// get an element from the loaded document
mshtml.HTMLDocumentClass document = ((mshtml.HTMLDocumentClass)ie.Document);
document.getElementById("myelementsid");
0 голосов
/ 10 октября 2009

Я не уверен, как это можно сделать в C #, так как это не мой язык, но это можно сделать с помощью Javascript, особенно с помощью функции jQuery offSet () .

...