Web从交互式图表中抓取数据,该数据随屏幕上的光标位置而变化

时间:2016-07-17 15:08:24

标签: python web-scraping lxml lxml.html

我正在尝试通过此网址抓取数据http://poker.srv.ualberta.ca/preflop。在页面上,您会看到一个交互式表格,如果您将光标移到不同的方块上,它只会显示翻牌前操作。我检查了源代码,所有信息都在类统计摘要中,但统计摘要随光标位置的变化而变化。有没有办法使用lxml和请求推断ENTIRE表?我能够做到一个位置,但不是全部。

到目前为止我的代码:

from lxml import html
import requests
page = requests.get("http://poker.srv.ualberta.ca/preflop")
tree = html.fromstring(page.content)

3 个答案:

答案 0 :(得分:0)

我认为你不能只使用lxml和请求来做到这一点。这是一个d3图表,您可以使用像phantomjs这样的无头浏览器(模拟鼠标mouvements)。如果您检查页面源(在结束ob body标记之前),您尝试获取的数据可用作javascript对象。这是我找到的文件的一个例子。 http://poker.srv.ualberta.ca/data/rPreflop.js

答案 1 :(得分:0)

您可以使用“ Selenium”来模拟单击并按住操作,同时可以获取并解析要抓取的文本。但是这种方式有点慢。

一种更好的方法是调查网站结构并跟踪源文件的位置(通常是csv文件),然后简单地将该文件抓取并解析。这样效率更高,但需要一些时间。

答案 2 :(得分:-1)

我已经看到没有AJAX调用来加载图表背后的数据。

他们只能加载图表的数据来自他们网站上的那些JS文件。

我建议您查看所有JS文件,看看他们是如何计算这些值的。

以下是其服务器上的一些JS文件。

http://poker.srv.ualberta.ca/data/crPreflop.js

http://poker.srv.ualberta.ca/data/cPreflop.js

你将不得不花一天时间研究这些文件中的数据,你会发现。