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

时间:2015-10-13 07:46:37

标签: python html5 web-scraping local-storage

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

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

有可能这样做吗?是否有任何Python库可以让它变得简单?

2 个答案:

答案 0 :(得分:3)

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

其他选项是 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存储完全属于客户端脚本的范围。   Web存储数据不会在每个HTTP请求中自动传输到服务器,并且Web服务器无法直接写入Web存储。但是,使用显式客户端脚本可以实现这些效果中的任何一种,从而允许微调与服务器的所需交互。

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

答案 1 :(得分:0)

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

感谢此api,您可以navigate to the right page然后execute a javascript snippet访问localStorage变量。