C#WebBrowser无法扩展所有HtmlElements

时间:2015-12-18 22:07:46

标签: c# html web-crawler webbrowser-control htmlelements

我在抓取网页时遇到问题,因为C#webClient类和webBrowser类无法检索Html源代码中的所有子元素。

当我从Chrome或iExplorer搜索代码时,我可以扩展所有HtmlElement节点,但如果我尝试从代码中扩展所有这些元素,我就无法获得所有节点。

我正在使用此例程来获取节点:

string page = ConfigurationManager.AppSettings["url"];
webBrowser1.Navigate(page);
string directory = Directory.GetCurrentDirectory();
StreamReader myReader = new StreamReader(webBrowser1.DocumentStream);
StreamWriter myWriter = new StreamWriter(directory + @"\pageSource.txt");
while (myReader.Peek() >= 0)
{
     myWriter.WriteLine(myReader.ReadLine());
}
myWriter.Close();
myReader.Close();

文件pageSource.txt没有原始html源代码中的所有行。

例如,这是pageSource.txt内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<noscript>
<meta HTTP-EQUIV="REFRESH" CONTENT="0;URL=index.jsp?noscript=1">
</noscript>
<title>Page</title>

</head>

<frameset id="indexFramst" onload="onloadHandler()" rows="135,24,*"  frameborder="0" framespacing="0" border=0 spacing=0>

    <frame name="Banner" title="Banner" src='banner.html'  tabIndex="3" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" noresize=0>
    <frame name="Search" title="Toolbar" src='archive=100' marginwidth="0" marginheight="0" scrolling="no" frameborder="0" noresize=0>
    <frame name="Bingo" title="BINGO" src='bingo.Html' marginwidth="0" marginheight="0" scrolling="no" frameborder="0" >
</frameset>
</html>

每个<frame>标记必须包含结束项和子项,但webBrowser1的文档不会检索此子项。

原始页面在每个框架中包含标签<html>标签和其他嵌套的html文档。

如果有人知道为什么我无法检索这个节点,我会非常感谢这个提示。

0 个答案:

没有答案