【问题标题】:Is it possible to have python read csv returned from javascript?是否可以让python读取从javascript返回的csv?
【发布时间】:2014-05-06 01:09:15
【问题描述】:

我很好奇是否可以读取从 javascript 调用返回的 csv?

具体来说,在这个页面上: http://www.fangraphs.com/leaders.aspx?pos=all&stats=pit&lg=all&qual=y&type=1&season=2014&month=0&season1=2011&ind=0&team=0&rost=1&age=0&filter=&players=0

有一个“导出数据”按钮。

如何让 Python 模拟点击然后解析 CSV 库?我试过让它与机械化一起工作,但运气不佳。有人可以举个例子吗?

我正在使用 Python 3。

【问题讨论】:

  • 你不会模拟点击。你要做的是尝试找到发送的 HTTP 请求并模拟它。
  • 这就是我的想法,不知何故我会得到完整的 url 并将其传递给 urllib -- 但究竟如何?
  • @user2100799 如果某些内容是由运行一段 JavaScript 代码产生的,则通常是某些用户交互的结果。在这种情况下,http 请求将会失败,因为它将缺少提供 JavaScript 功能的 Web 浏览器的完整环境。
  • @JanVlcinsky 只需将 url 粘贴到浏览器中并单击导出数据即可获得所需的 CSV。使用 user2100779 的代码,我可以弹出 csv,但我该如何阅读它?将其包裹在 urlopen 中不起作用。

标签: javascript python csv


【解决方案1】:

我建议使用selenium (download link),它非常支持javascript。 All docs here

这里有一个简单的例子来说明如何做到这一点:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.priceline.com/")
driver.find_element_by_id("hotel-btn-submit-retl").click()
driver.close()

发件人:Clicking in a online js button with python

【讨论】:

  • 这非常接近我需要它做的事情。如何捕获和读取弹出的 .csv 文件?
  • 你能不能不把 chrome/firefox 的设置改成在你编码的时候自动保存在目录中?
  • 获取页面内容,使用browser.page_source
【解决方案2】:

在您的情况下,“导出数据”确实不会导致可见的 http 请求,并且纯粹是 JavaScript 代码执行的结果。

为此,您需要有某种网络浏览器。

检查mechanize 包和相关教程,如这里http://wwwsearch.sourceforge.net/mechanize/

它允许模拟网络浏览器并执行“点击”等操作。

【讨论】:

    猜你喜欢
    • 2020-12-31
    • 1970-01-01
    • 2010-11-03
    • 2022-01-19
    • 1970-01-01
    • 2023-03-23
    • 2021-12-29
    • 2018-04-04
    相关资源
    最近更新 更多