【问题标题】:How to read local storage using Python?如何使用 Python 读取本地存储?
【发布时间】:2016-01-10 20:48:14
【问题描述】:

我必须使用 Python 以自动方式访问(读取)网页。使用 Python,我可以轻松访问网页内容(HTML 代码)以及服务器发送的 cookie。

现在,在 HTML5 中,我们有了一个新概念“本地存储”。因此,我需要修改我的 Python 脚本,以便我也可以读取存储在本地存储中的数据。

有可能吗?是否有任何 Python 库使它变得简单?

【问题讨论】:

    标签: python html web-scraping local-storage


    【解决方案1】:

    是的,但是 Python 本身不包含 JavaScript 解释器。 因此,正如 thibpat 所提到的,您可以通过 Selenium 在 Web 浏览器实例上执行自定义脚本。

    其他选项是 PhantomJS,运行无头浏览器。

    迭代 localStorage 的脚本

    for (var i = 0; i < localStorage.length; i++){
        key=localStorage.key(i); 
        console.log(key+': '+localStorage.getItem(key));
    }
    

    高级脚本

    如提到的here HTML5 功能浏览器也应该实现Array.prototype.map。所以脚本将是:

    Array.apply(0, new Array(localStorage.length)).map(function (o, i) 
       { return localStorage.key(i)+':'+localStorage.getItem(localStorage.key(i)); }
    )
    

    Python 绑定

    您可能希望将 Python 绑定与桌面开发框架结合使用。前任。 PyQt.

    为什么 JavaScript 来获取本地存储

    来自definition:

    与服务器端和客户端都可以访问的 cookie 不同,网络存储完全属于客户端脚本的范围。 Web 存储数据不会在每个 HTTP 请求中自动传输到服务器,Web 服务器也不能直接写入 Web 存储。但是,这些效果中的任何一种都可以通过显式客户端脚本来实现,从而可以微调所需的与服务器的交互。

    因此,在我看来,本地存储是由网络浏览器(例如 Opera)存储在运行浏览器的硬盘(或云计算机)上某处的数据。因此,要获取它们,您需要在本地破解 Opera 的执行、库和/或数据文件,这很难。最简单的方法是应用客户端脚本,即 JavaScript。

    【讨论】:

    • 谢谢你的回答。我不明白的是,为什么我们需要一个 JavaScript 解释器。是的,我知道存储在本地存储中的数据由 JavaScript 在本地读取和使用,但这并不一定意味着数据本身被保存为必须“解释”的 JavaScript 代码。那么,我们为什么需要口译员?
    • @Roman,在 JavaScript 解释器 我的意思是 JavaScript_engine en.wikipedia.org/wiki/JavaScript_engine,这是在客户端执行 JS 并获取本地的东西存储内容。
    【解决方案2】:

    我不知道您现在使用的是哪个库,但您可以使用 Selenium 和 Web Driver API。此 API 允许您控制 Chrome/Firefox 等浏览器或 PhantomJS 等无头浏览器。

    感谢这个 api,您可以通过navigate to the right page 和execute a javascript snippet 访问 localStorage 变量。

    【讨论】:

      猜你喜欢
      • 2014-06-20
      • 2019-03-24
      • 1970-01-01
      • 2014-11-08
      • 2018-02-25
      • 2014-06-04
      • 1970-01-01
      • 2021-03-12
      • 2021-08-19
      相关资源
      最近更新 更多