如何使用“更多”按钮阅读此页面上的完整HTML源代码

时间:2012-01-12 18:27:01

标签: python html parsing

我在浏览器下面有一个网页,正如您所看到的,它是关于交易外汇和网站列出所有实时交易记录:

http://www.forexfactory.com/trades.php?reset=1

我通常使用python来读取背后的源代码并通过BeautifulSoup解析信息。但是,在这种情况下,正如您所看到的,这里是窗格末尾的“更多”可点击按钮:

a busy cat http://i.minus.com/ibfq5BgLjta0Lo.jpg

如果我点击一次,交易列表将被延长一次,在列表末尾更多地再次点击。点击两三次后,整个列表将完整显示。我怎么能让python以编程代码的方式单击更多,然后我可以获取整个交易记录列表?

以下问题:通常,我们可以阅读HTML源代码并使用一些解析技术从复杂的标签中获取文本信息。但是,如果您没有转到源代码但是使用鼠标选择Web的整个内容,则点击“ctrl + c”然后您将获得浏览器中显示的所有文本而没有复杂的标签。我认为这也可能是获取信息的另一种方式。但是,似乎python只能读取HTML源代码,有没有像我所描述的那样简单地选择web的整个内容然后复制然后我们得到一个包含没有标签的整个文本信息的长字符串?

非常感谢大师!!!

2 个答案:

答案 0 :(得分:2)

基本上点击更多时,会设置X-Requested-With: XMLHttpRequest标题。您也可以使用firefox的live http header插件来查看它。这意味着正在进行ajax请求。

所以,基本上你有两个选择:

1)点击more时观察网址格式并在代码中使用它们。

2)您可能会遇到python-spidermonkey module,其目的是从python执行javascript。

您也可以使用Selenium。它是一个库,允许您从您选择的语言控制真正的Web浏览器。

答案 1 :(得分:1)

使用Webkit的开发人员工具(特别是网络),我们可以看到点击更多实际调用http://www.forexfactory.com/flex.php?do=savestate&flexId=flex_explorer_tradeActivity&more=1。如果我们再次点击它,它会在more之后放置一个“2”,然后是“3”等。

如果我们查看这些响应,我们会得到一些包含要在网页上加载的信息的JSON数据。您的工作是解析此信息(在从网页上抓取的数据之上)以获取完整的数据集。不幸的是,除非你自己构建HTML,否则我无法想到在点击更多内容后实际获取HTML的方法。