如何使用 Python 读取本地存储?

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 变量。

【讨论】:

以上是关于如何使用 Python 读取本地存储?的主要内容,如果未能解决你的问题,请参考以下文章

如何生成输入数据并将其存储到本地文件中我们如何使用kafka读取此输入生成文件的数据

如何从 SQL Server 表中读取图像数据(存储 word 文档)并将其保存到本地文件夹

使用 selenium 从 html 5 本地存储中读取

Android - 如何在 WebView 中访问本地存储值?

标注数据读取与存储案例:xml读取本地文件存储到pkl

如何使用存储过程在本地读/写或复制/粘贴文本文件?