如何从URL解析文本数据?

时间:2011-08-19 03:15:13

标签: .net html xml vb.net

我们使用以下代码尝试从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> 

任何人都可以帮助我们弄清楚如何获得这种“原始”页面响应吗?它可能是 脚本需要几秒钟才能响应,而我们只是看到了 初始页面响应。提前感谢您的意见。

1 个答案:

答案 0 :(得分:0)

你或多或少都不走运。问题是您 获取原始页面响应。如果您是浏览器,则可以执行javascript并获取所需的数据。但你不是浏览器,你是vb.net程序,所以运行这个javascript理论上是可行的,但可能非常困难。

对于类似这样的事情,通常最简单的解决方案是使用javascript在浏览器中实际运行代码,并将数据从那里发送到您的服务器。目前尚不清楚这是否可行。

如果没有,您需要在可以成功运行的环境中在服务器端执行javascript。那不是很有趣。你可以编写Internet Explorer脚本(哎呀!),使用Rhino(可能很难获得脚本执行所需的环境),使用node.js(在Windows中还不是很稳固,可能很难获得所需的环境)要执行的脚本,或者从那里研究你自己的选择。

或者您可以从原始HTML响应中解析数据,或者弄清楚如何获取数据。

如果sprintpcs为您提供了一个API来获取您想要的数据,那么也会更容易。