質問

私は、WebページからHTML要素の座標を抽出しますウェブクローラを開発する予定です。私はhtml要素は「MSHTML」のアセンブリを使用して座標を取得することが可能であることを見出しました。今の私はそれが可能であり、Webページから必要な情報のみ(HTML、CSS)を取得する方法かどうかを知りたいし、適切なMSHTMLクラスを使用してすべてのHTMLの正しいの座標を取得します要素?

ありがとうございます!

役に立ちましたか?

解決

私は、要素の位置を決定するためにこれらの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");

他のヒント

私はそれが好きな私の言語ではありませんように、1つは、C#でこれを行うことができますかわからないが、それは特にjQueryの<のhref = "http://docs.jquery.com/CSS/offsetを使用して、Javascriptを使用して行うことができます"REL =" nofollowをnoreferrer ">オフセット()関数の

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top