Запазете данните с помощта на Greasemonkey/Tampermonkey за по-късно извличане

Работя по проект, който изисква данни от уебсайт. Проблемът с тези данни е, че те са организирани в много различни уеб страници със серийно номериране в URL адреса. За да се справя с този проблем, написах прост скрипт в Tampermonkey, който преминава през тези страници и получава данните в низова променлива в скрипта.

Сега идва истинският проблем, как да съхранявам тези данни. Знам, че не мога да пиша във файл на компютъра си, но могат ли данните да се показват в отделен раздел в браузъра ми, така че да мога да ги копирам и поставя в локален файл, когато цикълът приключи? Искам да добавя низ в паметта на всеки цикъл

Не искам да използвам GM_setValue, защото искам данните в необработен текстов формат (като .txt файл)

Въпреки това, ако може да се запише директно във файл на моя компютър без използването на външна библиотека, това би било за предпочитане.


person AvZ    schedule 05.12.2015    source източник


Отговори (1)


Знам, че не мога да пиша във файл на моя компютър

Ето някои добри новини за вас: Да, можете!

var a = document.createElement("a");
a.href = "data:text,Hello World!";   //content
a.download = "Hello.txt";            //file name
a.click();

http://jsfiddle.net/DerekL/jgfhwfL0/


Първо отворете вашата локална страница, master.html (http://localhost:8080/master.html):

<html>
    <head>
        <script>
            window.addEventListener("load", function(){
                //This is just like working with threads but in JavaScript
                if(location.search.length){
                    //receiver
                    var query = decodeURIComponent(location.search.slice(1));
                    var data = JSON.parse(query).value;

                    //handle data
                    localStorage.storage = +localStorage.storage + data;

                    location.href = "about:blank";  //exit
                }else{
                    //master
                    sum = document.getElementById("sum"); 
                    sum.innerText = localStorage.storage = "0";

                    window.addEventListener("storage", function(){
                        //data received from receiver
                        sum.innerText = localStorage.storage;
                    });
                }
            });
        </script>
    </head>
    <body>
        Sum: <span id="sum"></span>
    </body>
</html>

След това можете да започнете да изпращате данни към него във всяка уеб страница:

var frame = document.createElement("iframe");
frame.src = 'http://localhost:8080/master.html?{"value":90}';    //port 8080
document.body.appendChild(frame);

Броячът на сумите трябва да се актуализира автоматично при получаване на данни.

person Derek 朕會功夫    schedule 05.12.2015
comment
Ако приемем, че всичко това е стандартен JS. Да кажем, че вече имам текстов файл, съхранен на моя компютър, ще мога ли да го редактирам с помощта на JS/Tampermonkey за добавяне на данни? - person AvZ; 05.12.2015
comment
Да, HTML5 има API за файлове, който ви позволява да четете файлове. Обърнете внимание, че вие ​​като потребител ще трябва да изберете файла през потребителския интерфейс на браузъра (модал за избор на файл), вместо програмата да го отвори автоматично поради съображения за сигурност. - person Derek 朕會功夫; 05.12.2015
comment
Ами това е проблема. Имам 100+ уеб страници, от които искам да получа данни и да ги съхранявам в локален файл. Не е необходимо да го чета с помощта на JS, а само да го редактирам и създавам. - person AvZ; 05.12.2015
comment
@AvZ Мислили ли сте да създадете разширение вместо да използвате Tampermonkey, който може само да инжектира скриптове в уеб страници? Разширението има много повече разрешения и ще улесни този начин. - person Derek 朕會功夫; 05.12.2015
comment
Искам само да използвам TM/GM, за да запазя по някакъв начин информацията. За мен би било добре всеки низ се добавя към уеб страница, показана в раздела на браузъра ми, която след това мога да копирам и поставя в текстов файл - person AvZ; 05.12.2015
comment
Дори и да се съхранява по някакъв начин в дневника на TM, поне може да се копира и постави - person AvZ; 05.12.2015
comment
@AvZ Ако файлът първоначално е празен, един от начините, за който се сещам, е да създам главна уеб страница, хоствана на localhost, и да изпратя всички данни до там, където можете да съберете данните в края (вероятно да ги запишете във файл.) - person Derek 朕會功夫; 05.12.2015
comment
Как бих го направил? Можете ли да го покажете в отговора? - person AvZ; 05.12.2015
comment
Получавам SERVER_BAD_CONTENT, когато се опитвам да изтегля копирано съдържание от сайт (не localhost), има ли начин да заобиколя това? - person Veltzer Doron; 29.01.2018