Web浏览器和IE的行为有何不同?

时间:2012-01-06 17:11:06

标签: c# internet-explorer browser cross-browser

我在解决某些问题时遇到了麻烦。我有一个带有Webbrowser控件的程序。 它从一些网站自动爬行过程。问题是我在最近的网站更改后无法修复webbrowser。

他们改变了网站上的页面导航。当我在webbrowser(在我的应用程序中)手动操作时,它不会转到网站上的下一页/上一页。它什么也没做......虽然它在IE 7/8/9中正常工作(这次只抛出脚本错误)。

这是否意味着Webbrowser与IE完全不相似?

我很抱歉没有在这里显示源代码,我认为这对此没有帮助。我应该采用哪种方式对其进行故障排除?为什么页面导航在Web浏览器控件中不起作用?

我试图简单地将Webbrowser放在新项目的窗口窗体中,并尝试在网站目录中导航第2/3页/第10页,但它只是更改页码而不导航到它...

编辑:即使我使用鼠标点击在webbrowser中手动执行操作,网站也无法正常工作..但在IE中可以使用。

EDIT2:我可能不清楚我的问题。问题是我不能通过我的Webbrowser控件在应用程序中使用鼠标点击手动使用网站。单击它后,它会更改页码,但不会导航到该页面。它保持沉默。我确定AllowNavigation属性为true。它在昨天工作,并在今天网站更改后停止...请告诉我应该采用哪种方式对其进行故障排除..我认为Webbrowser控件的行为方式与Internet Explorer相同..任何来自您的帮助都非常感谢!感谢

EDIT3:奇怪的是......我刚加载了Extended Webbrowser并导航到该网站。页面导航面板在那里也不起作用..这是他们身边的一个bug还是爬虫的某种类型的守卫?你怎么看? (http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx)

3 个答案:

答案 0 :(得分:0)

我确信这不是你想要的答案,但是使用webbrowser控件来抓取网站是非常痛苦的。

而是使用HttpWebRequest和HttpWebRepsonse对象重新创建对Web服务器的调用。

您可以使用Fiddler(http://www.fiddler2.com/fiddler2)和您的浏览器记录您的网络会话并在代码中重新创建它们。

答案 1 :(得分:0)

您可以设置webbrowser控件以禁用许多功能,包括导航。

即。禁用C#WebBrowser控件中的导航:

webBrowser1.AllowNavigation = false;

我会仔细检查你是不是在做这样的事情。

答案 2 :(得分:0)

我最近更改了其格式的某个网站遇到了同样的问题。它与控件使用的IE版本有关。

只需强制使用最新的IE版本(在我的情况下为9)。为我的应用程序设置适当的注册表项目为9999;见:Webbrowser control behaving different than IE