ФорумПрограммированиеPython → Python WebDriver light

Python WebDriver light

  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 19 сентября 2015 г. 19:46

    @adw0rd к тебе наверное вопрос больше. какой самый простой двиг знаешь? нужно самое легковесное решение в плане потребления ресурсов.

    Задача - есть список url и нужно загрузить их, а потом готовый html body забрать оттуда. тобишь дожидаемся onready и сгребаем :)

    список url ваще хуй проссышь какой, что угодно может быть.

    Спустя 17 сек.

    selenium или что-то полегче еще знаешь ?

    Сапожник без сапог
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2015 г. 12:17, спустя 16 часов 30 минут 51 секунду

    Ну если не задумываться, то splinter.

    Далее можно юзать хром напрямую через Remote Debugging Protocol 1.1 - Google Chrome [developer.chrome.com] - это будет значительно быстрее и контролируемей чем протокол webdriver. но надо чуть пописать будет. запуск, подключение по вебсокету, ну и работу по API.

    Если необязателен прям совсем настоящий браузер можно попробовать phantomjs, но это уже js.

    И если прям совсем нужны малые ресурсы, то убираем слово python и начинаем юзать zoombie.

    Спустя 60 сек.

    Zombie by assaf [zombie.js.org]

  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 20 сентября 2015 г. 12:24, спустя 7 минут

    Если необязателен прям совсем настоящий браузер можно попробовать phantomjs, но это уже js.

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

    спс! но это уже вторым этапом будет )) щас пока оставил тупо requests.get().

    пока нет желания усложнять, контента тьма и так )) если что-то пропущу не страшно

    Сапожник без сапог
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2015 г. 12:45, спустя 20 минут 52 секунды

    @phpdude, но смотри, осторожнее с phantomjs, да и вообще с любыми недобраузерами. Когда я его юзал он не работал с вебсокетами (или криво работал..), херово позиционировал элементы... ну и ещё чего-то там такое было, что пришлось отказаться. Имей в виду, что что-то он переварит, а что-то нет.

  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 20 сентября 2015 г. 12:55, спустя 10 минут 19 секунд

    @phpdude, но смотри, осторожнее с phantomjs, да и вообще с любыми недобраузерами. Когда я его юзал он не работал с вебсокетами (или криво работал..), херово позиционировал элементы... ну и ещё чего-то там такое было, что пришлось отказаться. Имей в виду, что что-то он переварит, а что-то нет.

    @mathete, мне надо не вью полноценное от него, а просто тупо body.html после того как js jnработает. наверное справится если чо)) но позже, щас более просто реализую, а то в перфекционизм уйду

    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 7:08, спустя 17 дней 18 часов 12 минут

    @phpdude, но смотри, осторожнее с phantomjs, да и вообще с любыми недобраузерами. Когда я его юзал он не работал с вебсокетами (или криво работал..), херово позиционировал элементы... ну и ещё чего-то там такое было, что пришлось отказаться. Имей в виду, что что-то он переварит, а что-то нет.

    @mathete, мне кажется мы с ним подружимся =))) щас мы его научим делать то что нужно! Спасиб, его и искал, просто имя забыл, а то слышал про него, а так на память то с чем не работал хер вспомнишь )

    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 13:24, спустя 6 часов 16 минут 1 секунду

    ублюдство в том, что под mac os el capitan он не пашет, то есть пашет с багами и пиздец тупит. Думал сначала что это фонтом сам ебанутый, поставил на сервер, один и тот же скрипт запускаю на сервере - секунда блядь! локально запускаю - 10. И то из 10 попыток 5 отваливаются с ошибкой security error embed file:///script.js into about:blank сцука нахуй

    Спустя 144 сек.

    даже phantomjs -h генерился секунд 8 блядь! поставил в итоге какой то реплейс от него - phantomjs2, локально стало тоже секунда. ненавижу такую тарту времени сцука, потерял весь день на дебаг того что не поддавалось дебагу

    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 13:44, спустя 19 минут 26 секунд

    @phpdude, да, это бесит. Из моего опыта самые пиздецы были когда всякие Firebug глючили и наебывали меня. Теряешь кучу времени, уже руки опускаются, потом браузер перезапустишь и все работать начинает как надо

    Спустя 27 сек.

    или пики в питоне, тоже иногда делают подставу

    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 13:47, спустя 3 минуты 1 секунду

    @adw0rd, да пиздец. часов 8 просидел чуть не поседел. А проблема не в моем коде была ... сцука зол )

    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 14:02, спустя 15 минут 27 секунд

    @phpdude, завтра-послезавтра отойдешь, много не пей

    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 14:15, спустя 13 минут 15 секунд

    @phpdude, завтра-послезавтра отойдешь, много не пей

    @adw0rd, да блин, ну щас 3 секунды. Было сука 10 )) щас походу вообще в докер засуну эту дрянь ебаную.

    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 15:03, спустя 48 минут 2 секунды

    @adw0rd, зацени разницу.

    Screenshot “1. Default (bash) 2015-10-09 01-02-36.png” [take.ms]
    Screenshot “1. [email protected]: /mnt (docker) 2015-10-09 01-04-08.png” [take.ms]

    из под docker'а :)

    Спустя 139 сек.

    Screenshot “1. [email protected]: /mnt (bash) 2015-10-09 01-06-03.png” [take.ms]

    Спустя 78 сек.

    phantomjs2 тоже около 3 секунд, видимо инет тупо дуплится

    Спустя 102 сек.

    еще фишка )) походу phantomjs2 переваривает код лучше чем первая версия, так как на первой версии не генерируются ссылки на счетчики посещаловки, а на второй генерятся ))

    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 15:17, спустя 13 минут 54 секунды

    а все потому что на версии 1 валятся вот такие ошибки. видимо версия javascript разная ..
    TypeError: 'undefined' is not a function (evaluating 'Array.prototype.forEach.call.bind(Array.prototype.forEach)')
    ReferenceError: Can't find variable: jQuery

    Спустя 133 сек.

    эвано каг

    @ArtjomB points out that Phantomjs does not support js bind in it's current version as of this update (1.9.7). For this reason he explains: ArtjomB: PhantomJs Bind Issue Answer

    Phantomjs page.content isn't retrieving the page content [stackoverflow.com]

    видимо поэтому у @mathete сокеты и не работали тож

    Спустя 166 сек.

    запилил грязный хак в статье и усе заработало :)

    
    page.onInitialized = function () {
        page.evaluate(function () {
            var isFunction = function (o) {
                return typeof o == 'function';
            };
    
            var bind,
                slice = [].slice,
                proto = Function.prototype,
                featureMap;
    
            featureMap = {
                'function-bind': 'bind'
            };
    
            function has(feature) {
                var prop = featureMap[feature];
                return isFunction(proto[prop]);
            }
    
            // check for missing features
            if (!has('function-bind')) {
                // adapted from Mozilla Developer Network example at
                // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind
                bind = function bind(obj) {
                    var args = slice.call(arguments, 1),
                        self = this,
                        nop = function () {
                        },
                        bound = function () {
                            return self.apply(this instanceof nop ? this : (obj || {}), args.concat(slice.call(arguments)));
                        };
                    nop.prototype = this.prototype || {}; // Firefox cries sometimes if prototype is undefined
                    bound.prototype = new nop();
                    return bound;
                };
                proto.bind = bind;
            }
        });
    };
    

    Спустя 23 сек.

    теперь результаты phantomjs и phantomjs2 идентичны по списку запрошенных файлов

    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 15:39, спустя 21 минуту 14 секунд

    @phpdude, nice job

    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 8 октября 2015 г. 15:57, спустя 18 минут 23 секунды

    @phpdude, nice job

    @adw0rd, но глючить на маке phantomjs не закончил .. все равно мозги ебет))

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!