我们使用以下代码尝试从URL解析一些文本数据 下面:
Dim strURL As String = " http://pictures.sprintpcs.com/share.do?invite=VEL42hPQY
Yk34YgLaQPo&shareName=MMS&messageState=RETRIEVED"
' *** Establish the request
Dim loHttp As HttpWebRequest = DirectCast(WebRequest.Create(strURL), HttpWebRequest)
' *** Set properties
loHttp.Timeout = 10000
' 10 secs
loHttp.UserAgent = "Code Sample Web Client"
' *** Retrieve request info headers
Dim loWebResponse As HttpWebResponse = DirectCast(loHttp.GetResponse(), HttpWebResponse)
Dim enc As Encoding = Encoding.GetEncoding(1252)
' Windows default Code Page
Dim loResponseStream As New StreamReader(loWebResponse.GetResponseStream(), enc)
Dim lcHtml As String = loResponseStream.ReadToEnd()
loWebResponse.Close()
loResponseStream.Close()
LogResponseStream.WriteLine(lcHtml)
问题是我们在代码中得到的响应是不完整的 与浏览器中实际呈现的内容进行比较。我们得到的HTML 在html的主体中显示了一个javascript函数,我们真正想要的是 函数的结果,包括我们需要捕获的数据。这是 通过在Google Chrome中加载页面进行确认,点击文字“100360” 并选择“检查元素”,它允许我们看到整页的响应 我们需要的数据,具体如下:
<pre class="pre-longText-wrap">100360</pre>
任何人都可以帮助我们弄清楚如何获得这种“原始”页面响应吗?它可能是 脚本需要几秒钟才能响应,而我们只是看到了 初始页面响应。提前感谢您的意见。
答案 0 :(得分:0)
你或多或少都不走运。问题是您 获取原始页面响应。如果您是浏览器,则可以执行javascript并获取所需的数据。但你不是浏览器,你是vb.net程序,所以运行这个javascript理论上是可行的,但可能非常困难。
对于类似这样的事情,通常最简单的解决方案是使用javascript在浏览器中实际运行代码,并将数据从那里发送到您的服务器。目前尚不清楚这是否可行。
如果没有,您需要在可以成功运行的环境中在服务器端执行javascript。那不是很有趣。你可以编写Internet Explorer脚本(哎呀!),使用Rhino(可能很难获得脚本执行所需的环境),使用node.js(在Windows中还不是很稳固,可能很难获得所需的环境)要执行的脚本,或者从那里研究你自己的选择。
或者您可以从原始HTML响应中解析数据,或者弄清楚如何获取数据。
如果sprintpcs为您提供了一个API来获取您想要的数据,那么也会更容易。