【发布时间】:2013-11-07 16:38:02
【问题描述】:
到目前为止我已经尝试过了:
Dim wreq As HttpWebRequest = WebRequest.Create("http://www.nasdaq.com/symbol/goog/financials?query=income-statement&data=quarterly")
wreq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"
wreq.Method = "get"
Dim prox As IWebProxy = wreq.Proxy
prox.Credentials = CredentialCache.DefaultCredentials
Dim document As New HtmlAgilityPack.HtmlDocument
Dim web As New HtmlAgilityPack.HtmlWeb
web.UseCookies = True
web.PreRequest = New HtmlAgilityPack.HtmlWeb.PreRequestHandler(AddressOf onPreReq)
wreq.CookieContainer = cookies
Dim res As HttpWebResponse = wreq.GetResponse()
document.Load(res.GetResponseStream, True)
Debug.WriteLine(document.DocumentNode.OuterHtml)
但它会返回此网址的 HTML:http://www.nasdaq.com/symbol/goog/financials?query=income-statement
而不是这个:http://www.nasdaq.com/symbol/goog/financials?query=income-statement&data=quarterly
我做错了什么?
其他信息
这里是onPreReq
Private Function onPreReq(req As HttpWebRequest)
req.CookieContainer = cookies
Return True
End Function
【问题讨论】:
-
听起来您的
data参数没有通过。也许试试这样 - stackoverflow.com/a/17219511/1454048 -
我没有试过你的代码(如果有时间我会稍后),但基本上:你两个网址之间的区别只是
&data=quarterly部分,这似乎被忽略了,对吧?这只是一个额外的参数,它是标准 HTTPGET请求的一部分。尝试使用我上面链接中的方法,看看是否有帮助。 -
onPreReq中有什么东西正在更改地址。我没有 HtmlAgilityPack,所以我注释掉了一些代码并添加了一些其他代码,它看起来是正确的。 -
所以如果您点击上面发布的链接,它会将您带到另一个站点吗?奇怪的。请注意,我在测试中也没有使用 cookie,因为您的代码不完整。可能是 cookie 对您执行此操作,或者该网站正在重定向您,因为您访问它的次数过多。我以前见过。不太可能,因为他们只是将您引导至错误的财务页面。他们通常会将您重定向到某个 HTML 页面,该页面表明您的行为违反了他们的政策。
-
1:我认为 admdrew 只是指出了您的 2 个链接之间的明显问题。我不相信你做错了。 2:我不知道您的 cookie 中有什么或网站如何使用它们。尽量不要通过它们,看看会发生什么。 3:一切都失败了,在另一台计算机上的另一个公共IP(即,在朋友家)上尝试你的代码,看看它是否有效。如果是这样,那么该网站会因为点击次数过多而欺骗您。
标签: html vb.net html-agility-pack