Сохраняйте данные с помощью 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
Даже если он как-то хранится в журнале ТМ, по крайней мере, его можно скопировать-вставить - person AvZ; 05.12.2015
comment
@AvZ Если файл изначально пуст, я могу придумать один из способов — создать главную веб-страницу, размещенную на локальном хосте, и отправить туда все данные, которые вы можете собрать в конце (предположительно, записать их в файл.) - person Derek 朕會功夫; 05.12.2015
comment
Как бы я это сделал? Можете ли вы показать это в ответе? - person AvZ; 05.12.2015
comment
Я получаю SERVER_BAD_CONTENT при попытке загрузить очищенный контент с сайта (не с локального хоста), как это обойти? - person Veltzer Doron; 29.01.2018