我使用Greasemonkey从页面中捕获了数据列表。
GM脚本
var hit = GM_getValue("hit") || 0;
var _url = "http://localhost:8080/test?p=$$pageNo$$";
_url = _url.replace("$$pageNo$$", hit);
GM_setValue("hit", ++hit);
if(hit <= 100) {
window.location.href = _url;
}
此脚本将运行第n次并捕获&lt; 10K数据,现在我面临将捕获的数据存储在某个文件中的问题。 任何人都知道如何将捕获的数据存储到文件/存储库中?
由于 - Viswanathan G
答案 0 :(得分:11)
不,不能把它写到文件中,但是如果你真的很无聊,你可以将它发布到http://pastebin.com(或任何其他接受带有大量数据的POST请求的URL)。 / p>
GM_xmlhttpRequest({
method: "POST",
url: "http://pastebin.com/post.php",
data: <your data here>,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function(response) {
alert("posted");
}
});
请注意,您需要使用pastebin帐户才能使用该API。
如果确实需要将文件写入本地文件系统,请在桌面上运行Web服务器,然后将http PUT请求的结果保存到磁盘。
答案 1 :(得分:7)
一种非常快速简便的解决方案是使用FileSaver.js:
1)将以下行添加到Greasemonkey脚本的== UserScript ==部分
// @require https://raw.githubusercontent.com/eligrey/FileSaver.js/master/FileSaver.js
2)将以下两行代码添加到GM脚本
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
saveAs(blob, "hello world.txt");
此代码示例将显示一个对话框,用于下载名为&#34; hello world.txt&#34;的文件。包含文本&#34; Hello,world!&#34;。只需用您选择的文件名和文本内容替换它!
答案 2 :(得分:1)
我使用此技巧从Tampermonkey脚本下载文件:
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var blob = new Blob([data], {type: "octet/stream"});
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
然后通过以下方式调用它:
saveData("this data will be written in the file", "file.txt");
它通过创建一个隐藏元素并模拟被单击的元素来工作。就像用户单击了下载链接一样,因此文件将由浏览器下载,并保存在浏览器放置下载文件的任何位置。
答案 3 :(得分:0)
是,您可以写入文件。 但是出于明显的安全原因,并不是系统中的每个地方, 您只需在Cookie目录中写
var cookie_name="YourCookie";
var cookie_value="What you want to save inside your cookie";
var d = new Date();
d.setTime(d.getTime() + (28*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cookie_name +"=" + cookie_value + ";" + expires + ";path=/";
您可以
脚本将文件副本从Cookie目录复制到您的桌面,具体取决于 您的操作系统
或从Chrome Inspect->应用程序-> Cookies中读取值
或检索Cookie并使用以下命令在控制台中打印
decodeURIComponent(document.cookie);