我计划开发网络抓取工具,它会从网页中提取html元素的坐标。我发现可以使用“mshtml”程序集获取html元素坐标。现在我想知道是否有可能以及如何从网页获取必要的信息(html,css),然后使用适当的mshtml类获取所有html的正确的坐标元素吗
谢谢!
答案 0 :(得分:2)
我使用这些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 :(得分:0)
我不确定如何在C#中执行此操作,因为它不是我选择的语言,但可以使用Javascript完成,特别是使用jQuery的offSet() function。