PhantomJS Примитивы

Редакция автор: stain

Немного вводного нытья.

Итак после тыканья палками в NodeJS, смотришь примеры PhantomJS, и да теряешься, откуда там библиотеки подгружаются? Анализируя код думаешь что все это построено на том же Node, но НЕТ! Эти модули, они вероятно уже встроены в Phantom, либо что врядли подгружаются из jQuery скажете абсурд, и я пожалуй соглашусь. Но изначально ясности нет.

Так вот эти модули которые require уже встроены, все что надо это натравить Phantom на скрипт.js который что то там парсит, и получить результат. Безусловно можно подключать какие то сторонние инструменты для последующей обработки, например тот же jQuery.

Простой парсинг.

 
var fs = require('fs');
var page = require('webpage').create();
var url = 'http://www.pixarts.ru';

// Открываем страницу 
page.open(url, function (status) { if (status === 'success') { console.log('Page is loaded');

// Подключаем 
jQuery page.injectJs('jquery.min.js');

// Получаем нужный контент 
html = page.evaluate(function() { 
    /* пример не мой, нет на сайте который я типа парсил нужного класса тайтла 
    titles = ''; 
    $('.post_title').each(function(){ titles += $(this).html() + '\n'; }); 
    return titles;
    */ 
    return $('html').html(); });

    // Пишем в файл
    var file = fs.open('articles.txt', "w+");
    //если файл уже существует то будет дописано в конец, поэтому возможно стоит его удалять перед открытием.
    file.write(html + '\n');
    file.close();
    phantom.exit();
  }
});

Установка таймаутов.

html = window.setTimeout((function() {
  //Какой то запрос
}), 2000);

Ротация Юзерагентов.

// Список user-agent
var useragent = [];  
useragent.push('Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14');  
useragent.push('Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50');  
useragent.push('Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25');  
useragent.push('Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02');  
useragent.push('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0');

page.settings.userAgent = useragent[Math.floor(Math.random() * useragent.length)];  

2014 PhantomJS + CasperJS

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.