使用python从网站抓取非HTML数据

时间:2010-12-19 03:55:20

标签: python python-2.6

我正在尝试将此页面上的当前合约价格变为字符串:http://www.cmegroup.com/trading/equity-index/us-index/e-mini-sandp500.html

我真的很喜欢python 2.6解决方案。

使用urllib很容易获得页面html,但似乎这个数字是实时的,而不是在html中。我检查了Chrome中的元素,这是一些td类的东西。

但是我不知道如何使用python来实现这个目标。我尝试过beautifulsoup(但经过几次尝试后放弃了tar.gz才能在我的windows x64系统上工作),然后是elementtree,但我的编程兴趣确实是数据分析。我不是网站设计师,也不想成为一个网站设计师,所以它都是一种外语。这是实时价格XML吗?

感激地收到任何帮助。理想情况下,安装简单模块和一些实际代码,但所有提示和技巧都非常受欢迎。

4 个答案:

答案 0 :(得分:2)

看起来表中的数字是由Javascript填充的,所以只使用urllib或其他库获取HTML是不够的,因为它们不运行javascript。您需要使用像PyQt这样的库来模拟浏览器呈现页面/执行JS来填充数字,然后刮掉它的输出HTML。

请参阅有关使用PyQt的博客文章:http://blog.motane.lu/2009/07/07/downloading-a-pages-content-with-python-and-webkit/ link text

答案 1 :(得分:2)

如果您使用类似firebug的内容查看该网站,您可以看到它正在制作的AJAX调用。例如,初始值是用AJAX调用(至少对我来说)填写的:

http://www.cmegroup.com/CmeWS/md/MDServer/V1/Venue/G/Exchange/XCME/FOI/FUT/Product/ES?currentTime=1292780678142&contractCDs=,ESH1,ESM1,ESU1,ESZ1,ESH2,ESH1,ESM1,ESU1,ESZ1,ESH2

这将返回一个JSON响应,然后由javascript解析以填充表格。用urllib自己做这个很简单,然后使用simplejson来解析响应。

另外,您应该非常仔细地阅读此disclaimer您尝试做的事情可能并不适合网站所有者。

答案 2 :(得分:0)

很难知道在不知道号码来自何处的情况下告诉你什么。它也可能是php或asp,所以你将不得不弄清楚这个数字是哪种语言。

答案 3 :(得分:0)

尝试使用真实的网络浏览器,例如: G。通过命令行控制iMacros for Firefox / Chrome