Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 16.09.2015, 17:09
Аспирант
Отправить личное сообщение для ninja2 Посмотреть профиль Найти все сообщения от ninja2
 
Регистрация: 07.06.2015
Сообщений: 90

Там есть пример от тут, но он не работает пишет ошибку:
E:\project_web\porject2>phantomjs test5.js http://ariya.github.io/svg/tiger.svg tiger.png
PhantomJS has crashed. Please read the crash reporting guide at
<http://phantomjs.org/crash-reporting.html> and file a bug report at
<https://github.com/ariya/phantomjs/issues/new>.
Please attach the crash dump file:
C:\TEMP\58579f65-f122-4a02-9952-41983592337a.dmp

пример с тигром.
Заработал с тигром, копирует, только другие копирует и добавляет лишний нивидимый размер
[IMG SRC=http://f3.s.qip.ru/pQ6zADwr.png]

Последний раз редактировалось ninja2, 16.09.2015 в 17:24.
Ответить с цитированием
  #22 (permalink)  
Старый 16.09.2015, 17:50
Аспирант
Отправить личное сообщение для ninja2 Посмотреть профиль Найти все сообщения от ninja2
 
Регистрация: 07.06.2015
Сообщений: 90

когда ссылки у которых на конце png стоит то они не загружаются. Да смысл, если есть ссылка, то можно чем то другим сохранить изображение. В Phantomjs наверно любой код javaScript будет работать мб. какую то библиотеку подключить из node и сохранить.

Да что то я гуглю и ниче нету. Че JavaScript не может сохранить изображение из интернета? Я JavaScript плохо знаю, просто интересно .

Последний раз редактировалось ninja2, 16.09.2015 в 18:05.
Ответить с цитированием
  #23 (permalink)  
Старый 16.09.2015, 20:45
Аспирант
Отправить личное сообщение для ninja2 Посмотреть профиль Найти все сообщения от ninja2
 
Регистрация: 07.06.2015
Сообщений: 90

Ладно изображение мы не сохраним, это бесполезно, можно ссылку выводить на изображение в консоль, а из консоли считывать, фиг с ним с этим изображением.

Тут еще такие дела я сделал авторизацию на сайт fl.ru и второй раз на него захожу в phantomjs определяет что я не авторизован. Почему coocies не сохранились как в нормальном браузере???? Мне что каждый раз делать авторизацию? Ну это ужас, похоже phantomjs нужно только запускать как процесс, просто как самостоятельное приложение оно наврятли нормально работать будет. парсер так фиг нормальный напишешь или нет????

На чем вообще парсеры пишут??? Хотелось бы чтобы все было на JavaScript, а за кодировку еще забыл. Нужно ж еще и кодировку определять и если что перекодировать, в JavaScript такое есть или нет? Вообще что то javaScript убоговатый чуток

Последний раз редактировалось ninja2, 16.09.2015 в 20:48.
Ответить с цитированием
  #24 (permalink)  
Старый 16.09.2015, 22:52
Аспирант
Отправить личное сообщение для ninja2 Посмотреть профиль Найти все сообщения от ninja2
 
Регистрация: 07.06.2015
Сообщений: 90

Не лучше всетаки сохранить и изображение и все сделать через JS. Парсера быстро пишутся на нем, неохота смешивать, хочется все на js сделать

Последний раз редактировалось ninja2, 16.09.2015 в 22:55.
Ответить с цитированием
  #25 (permalink)  
Старый 18.09.2015, 08:30
Аспирант
Отправить личное сообщение для ninja2 Посмотреть профиль Найти все сообщения от ninja2
 
Регистрация: 07.06.2015
Сообщений: 90

А почему у меня не выводятся остальные элементы после первого которые я получаю с помощью getElementsByTagName ???
var links=page.evaluate(function() {
                    return document.getElementsByTagName('img');
                    });
                    console.log("links.length="+links.length);

                    console.log(links[0].src);//выводится нормально
                    console.log(links[1].src);//этот уже не выводится
                    for(var i=0;i<links.length;i++)
                    {
                        console.log(i);
                        console.log(links[1].src);//не выводится
                    }

1 элемент выводится и зависает на console.log(links[1].src); в чем проблема????
Выводит что 10 элементов в массиве, а получаю только один, остальные виснут. Как получить все src????

Разобрался, вывел просто console.log(links[i]); и оказалось что в 0 есть [object] а в остальных null, и что делать, почему функция вернула null и 9 элементов?
Как получить все изображения на странице???

querySelectorAll тоже также в первом элементе есть объект, а в 9 нету

От такой код работает, когда его в конец страницы добавляю
<script>
    var mass= document.querySelectorAll('img');
    alert(mass.length);
    for(var i=0;i<mass.length;i++) {
        alert(mass[i].src);
    }
</script>

и вообще length тут 12, а у меня 10, че то evaluate не правильно как то работает.

через JQuery получилось получить 10 изображений, через функции jS ниче не работает

Короче ясно, нужно и массив в функции evaluate обходить, тогда все нормально. Наверно JavaScript функции и работать не будут вне evaluate. Какаето фигня.

Последний раз редактировалось ninja2, 18.09.2015 в 09:20.
Ответить с цитированием
  #26 (permalink)  
Старый 19.09.2015, 13:47
Аспирант
Отправить личное сообщение для mrbanan Посмотреть профиль Найти все сообщения от mrbanan
 
Регистрация: 28.08.2015
Сообщений: 40

У меня так же самая проблема. Если парсю маленькие тестовые странички - всё нормально, как только большие страницы, сразу какая-то фигня, штуки 2 обработает и останавливается.
Запускаю через консоль, кто знает что и от чего это когда в консоли не решётка появляется типа user@server# а курсор мигает вот так

Видите на скрине после for is end он ждёт чего-то, что бы дать команду приходится Ctrl+C нажимать и тогда уже консоль опять реагирует.

Ещё не очень понятно phantom.exit где ставить правильно. Вот скрипт.
var urls = [
"https://site.ru/page=1",
"https://site.ru/page=2",
"https://site.ru/page=3",
"https://site.ru/page=4"
];
var numurls = urls.length;

for (u = 0; u < numurls; u++) {

    var fs = require('fs');
    var webPage = require('webpage');
    var page = webPage.create();
    
    console.log('link '+ urls[u]);
    page.open(urls[u], function(status) {
      console.log('Status: ' + status);
      if (status === 'success') {
        
        //моя обработка и запись
        
        console.log('for is end');

        //phantom.exit();
      }
    });
    
} // конец цикла 1 url
Ответить с цитированием
  #27 (permalink)  
Старый 19.09.2015, 13:52
Аспирант
Отправить личное сообщение для mrbanan Посмотреть профиль Найти все сообщения от mrbanan
 
Регистрация: 28.08.2015
Сообщений: 40

Ах да ninja2, забейте на картинки, спарсите их потом на php, у меня уже есть готовый парсер, работает отлично, скорость парсинга офигенная 45 картинок за 0,3 секунды.
Phantom применять что бы картинки парсить это как-то странно короче, он для более сложных задач обычно применяется.
Ответить с цитированием
  #28 (permalink)  
Старый 20.09.2015, 02:19
Аспирант
Отправить личное сообщение для ninja2 Посмотреть профиль Найти все сообщения от ninja2
 
Регистрация: 07.06.2015
Сообщений: 90

Сообщение от mrbanan Посмотреть сообщение
Ах да ninja2, забейте на картинки, спарсите их потом на php, у меня уже есть готовый парсер, работает отлично, скорость парсинга офигенная 45 картинок за 0,3 секунды.
Phantom применять что бы картинки парсить это как-то странно короче, он для более сложных задач обычно применяется.
Оно удобней когда и изображения сразу копировать, лучше все на JavaScript делать.

Та уже разобрался как картинки парсить, от тут в самом низу несколько примеров, есть пример авторизации на fl.ru

у тебя код может зависать потому что функции phantom.exit(); нету или бывает у меня зависало когда ошибка была в коде где то ошибка.

А как через php парсить, это типо сохранить в файл ссылки и потом скопировать или как то можно из php процессы создавать? От интересно можно через php запустить консольное приложение с параметрами???

Осталось еще прокси разобрать, я что то пробовал с прокси запускать так он пол часа ждет пока прокси отработает. Это не дело. Нужно как то время засекать сколько оно будет запускаться, долго через прокси грузилось.

Последний раз редактировалось ninja2, 20.09.2015 в 02:31.
Ответить с цитированием
  #29 (permalink)  
Старый 20.09.2015, 08:02
Аспирант
Отправить личное сообщение для mrbanan Посмотреть профиль Найти все сообщения от mrbanan
 
Регистрация: 28.08.2015
Сообщений: 40

Сам пока не успел опробовать но из php как-то так:
shell_exec('/usr/local/bin/phantomjs -v');

С параметром
$title = shell_exec('/usr/local/bin/phantomjs /script.js http://market.yandex.ru/model.xml?modelid=8230052&hid=90594');

А вы подскажите мне как поймать этот передаваемый параметр в ЯваСкрипте?
Ответить с цитированием
  #30 (permalink)  
Старый 20.09.2015, 10:17
Аспирант
Отправить личное сообщение для ninja2 Посмотреть профиль Найти все сообщения от ninja2
 
Регистрация: 07.06.2015
Сообщений: 90

Сообщение от mrbanan Посмотреть сообщение
$title = shell_exec('/usr/local/bin/phantomjs /script.js http://market.yandex.ru/model.xml?modelid=8230052&hid=90594');

А вы подскажите мне как поймать этот передаваемый параметр в ЯваСкрипте?
var system=require('system');
var url=system.args[1];
console.log(url);
phantom.exit();

вроде так.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью javascript взять данные из одного файла html и закинуть в другой? rusik Общие вопросы Javascript 10 08.08.2016 12:11
Как создать двумерный массив с помощью циклов. dima*** Ваши сайты и скрипты 30 16.12.2012 13:58
Как получить доступ к ссылкам в iframe с помощью js Gratt Общие вопросы Javascript 4 01.09.2009 21:17
Как из HTML-документа с помощью Javascript получить оглавление каталога? eto_dimka Общие вопросы Javascript 1 04.01.2009 22:18
Как с помощью JS "на-лету" менять часть HTML кода greendoc Общие вопросы Javascript 2 18.03.2008 20:43