【问题标题】:Webbrowser and IE acts differently?Webbrowser 和 IE 的行为不同?
【发布时间】:2012-02-04 09:44:50
【问题描述】:

我在试图解决一些问题时遇到了麻烦。我有一个程序,里面有 Webbrowser 控件。 它自动从某些网站进行爬网过程。问题是最近网站更改后我无法修复网络浏览器。

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

那么是不是说Webbrowser和IE不完全相似??

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

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

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

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

EDIT3:奇怪的事情...我刚刚加载了扩展网络浏览器并导航到该网站。页面导航面板在那里也不起作用..这是他们身边的错误还是爬虫的某种保护?你怎么看? (http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx)

【问题讨论】:

  • -1:很抱歉您没有包含任何代码。
  • John,我如何检查为什么 webbrowser 控件在同一网站上的行为与 IE 不同?
  • 这肯定与你没有发布的代码有关。
  • 网络浏览器控件的行为与 IE 不同。我不确定如何控制 C# 控件中的行为,但您在本地实现 IDocHostUIHandler 和 WebOC 尝试进入其主机的其他接口。通过调整这些,您可以让它的行为方式与 IE 相同(因为 IE 就是这样做的)。见msdn.microsoft.com/en-us/library/bb544942(v=VS.85).aspx
  • @jeffamaphone:它的行为不同,取决于您实现的其他代码。这就是为什么我希望他发布他的代码。

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


【解决方案1】:

我确定这不是您想要的答案,但是使用 webbrowser 控件来抓取网站非常难以维护。

改为使用 HttpWebRequest 和 HttpWebRepsonse 对象来重新创建对网络服务器的调用。

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

【讨论】:

  • 谢谢,乔恩!但它看起来更容易像用户一样维护操作(通过点击模拟),而不是生成对网站的实际请求/响应。更改服务器端的任何标头都需要修复应用程序,不是吗?
  • 视情况而定。我已经抓取了网站并最终删除了大部分调用和标头,以减少代码,它仍然有效。因此,我认为除非他们的代码实际上是在检查特定的标头,例如引用者等,否则这无关紧要。如果网站 html 发生变化,您必须以任何一种方式更新代码。
【解决方案2】:

您可以设置您的网络浏览器控件以禁用包括导航在内的许多功能。

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

webBrowser1.AllowNavigation = false;

我会仔细检查你没有做这样的事情。

【讨论】:

  • 不,我没有在我的代码中更改该属性。自上次网站更改以来它停止工作..
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多