为什么HttpWebRequest和WebBrowser获得不同的HTML源代码?

时间:2011-01-01 05:58:23

标签: .net vb.net httpwebrequest browser

我正在尝试从网页上获取源代码。 WebBrowser控件正在向我提供我正在寻找的信息。但是,我想使用HttpWebRequest,但它给我的源代码不同于WebBrowser DocumentText。

任何人都可以告诉我如何使用HttpWebRequest获取与WebBrowser相同的源代码?

WebBrowser代码:

WebBrowser1.Navigate("http://www.networksolutions.com/whois/results.jsp?domain=" & txtUrl.Text)
textbox1.Text = WebBrowser1.DocumentText

WebBrowser结果:

http://textbin.com/f4368

HttpWebRequest代码:

Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url)
request.KeepAlive = False
request.Timeout = 10000

Dim response As System.Net.HttpWebResponse = request.GetResponse()

Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
Dim sourcecode As String = sr.ReadToEnd()

HttpWebRequest结果:

http://textbin.com/2h445

2 个答案:

答案 0 :(得分:5)

某些网站会查看用户代理字符串或其他因素,并返回因此而异的内容。我已经编写了许多下载网页的项目,并且已经尝试了几次。

答案 1 :(得分:0)

这是一个古老的问题但是发生这种情况的原因是MSHTML(Windows html呈现引擎)在呈现它之前修改了传入的HTML。您可以将.NET Web浏览器的呈现模式更改为使用任何IE7,8或9渲染引擎,您将看到它们从浏览器返回的HTML中存在巨大差异 - IE9将是最相似的你看到HttpWebRequest中的内容。