urlread英镑符号(#)不起作用

时间:2014-07-06 19:33:31

标签: matlab special-characters urlread

尝试阅读定价信息标签下的定价清单:

urlread( ' http://www.cefconnect.com/Details/Summary.aspx?Ticker=KYE#pricing ' )

但是在url' #price'没有帮助。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

正如Darin已经指出的那样,将#pricing添加到URL是没有用的。该网页使用客户端技术在标签之间切换;不是urlread可以使用的东西。

Summary.aspx始终将所有标签一起作为一个大页面返回。当在Web浏览器中打开时,CSS和JavaScript使其看起来像一样的选项卡集合。

使用Web浏览器的开发人员工具栏检查网页。例如,在Google Chrome中,只需右键单击您感兴趣的部分,然后选择“检查元素”。

我不知道你要对urlread的结果做什么,但你可能需要做一些解析来从HTML杂乱中提取所需的信息。

请注意Summary.aspx启动其他HTTP请求以检索其他数据。使用Chrome开发者工具栏的“网络”标签分析该行为。例如,在调整定价历史记录过滤条件后单击“开始”时会发出以下请求。

  

http://www.cefconnect.com/Resources/TableData/?Type=PricingHistory&Cusip=48660P104&param0=1M&param1=06/06/2014

起初,这似乎使整个问题复杂化,但实际上这可能是一个很好的机会。您可以使用上面的URL调用urlread,并获取一些JSON格式的数据,这比HTML更简洁。调整参数以获得不同的数据。我不确定48660P104是什么;它可能是KYE的内部代表。您可能希望使用对Summary.aspx的初始HTTP请求来检索该代码;您会注意到网页上堆满了包含相同参数Cusip的网址。

答案 1 :(得分:0)

#字符在网址中具有特殊含义。它代表fragment identifier,其后面的值永远不会发送到服务器。只有客户端javascript才能访问它。如果要将值发送到服务器,则需要url encode值:

urlread( ' http://www.cefconnect.com/Details/Summary.aspx?Ticker=KYE%23pricing ' )

对于其他特殊角色也是如此。你需要正确编码它们。