我必须使用Python以自动方式访问(读取)网页。使用Python我可以轻松访问网页内容(HTML代码)以及服务器发送的cookie。
现在,在HTML5中,我们有了一个新概念" Local Storage"。因此,我需要修改我的Python脚本,以便我也可以读取存储在本地存储中的数据。
有可能这样做吗?是否有任何Python库可以让它变得简单?
答案 0 :(得分:3)
是的,但是,Python本身并不包含JavaScript解释器。 因此,您可以在Web浏览器实例上通过Selenium执行自定义脚本,如 thibpat 所述。
其他选项是 PhantomJS ,运行无头浏览器。
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绑定与桌面开发框架结合使用。防爆。 PyQt
来自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变量。