2012-01-12 43 views
0

我有下面Explorer中浏览网页,你可以看到这个页面上,它是关于外汇交易和网站列表中的所有的真实交易记录在这里:如何阅读完整的HTML源代码与按钮“多”

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

我通常使用python来阅读背后的源代码并通过BeautifulSoup解析信息。然而,在这种情况下,你可以看到,这里是在窗格的最后一个“更多”点击按钮:

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

如果我点击它一个时间,交易的名单将延期一次,并在列表的末尾这里是更多的点击再次。点击两次或三次后,整个列表将完整显示。我怎么能让python以编程代码的方式点击更多,然后我可以获取贸易记录的整个列表?

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

非常感谢!

回答

2

基本上点击更多X-Requested-With: XMLHttpRequest标头设置。你也可以使用Firefox的live http header插件看到它。这意味着正在发出一个Ajax请求。

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

1)观察URL模式的ON点击more并在代码中使用它们。

2)你可能被集成在python-spidermonkey module,它旨在从python执行JavaScript。可以使用Selenium。这是一个图书馆,可以让您使用自己选择的语言来控制真实的网络浏览器。

+1

或pywebkitgtk或pyphantomjs或一些Python脚本浏览器。 – 2012-01-12 19:53:01

1

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

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