【问题标题】:Web scraping data from an interactive chart that changes with cursor position on the screenWeb 从交互式图表中抓取数据,该图表随屏幕上的光标位置而变化
【发布时间】:2016-07-17 15:08:23
【问题描述】:

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

到目前为止我的代码:

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

【问题讨论】:

    标签: python web-scraping lxml lxml.html


    【解决方案1】:

    我发现没有 AJAX 调用来加载图表后面的数据。

    他们可以加载该图表数据的唯一方法是从他们网站上的那些 JS 文件中。

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

    这是他们服务器上的一些 JS 文件。

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

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

    您将不得不花一天时间研究这些文件中的数据,然后您就会弄清楚。

    【讨论】:

    • 谢谢,这正是我想要的
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-01
        • 2014-06-08
        • 2019-04-26
        • 1970-01-01
        • 1970-01-01
        • 2019-01-01
        相关资源
        最近更新 更多