如何使用 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 文档)并将其保存到本地文件夹