Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.09.2014, 20:53
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от cyber
если эта штука будет быстрее jsdom, то кул, а так не вижу особо смысла
Значит ты ничего серьезного еще не парсил. Парсить хтмл можно чем-угодно, но если есть код выполняемый в браузере, то стандартные парсилки отпадают. Особенно если нужно спарсить код сгенерированный по клику или стоят какие-нибудь заковыканые проверки на браузер.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #12 (permalink)  
Старый 03.09.2014, 20:59
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

В линуксе кстати есть хитрый способ, чтобы спарсить даже флешь , но больно он уж хитрый.

Нужна интеграция шелл скриптов с юзерскриптами через XPCOM и можно творить чудеса. Разворачиваем браузер на весь экран и кликаем куда нужно с помощью шела. В общем полная жесть.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #13 (permalink)  
Старый 04.09.2014, 17:17
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Gozar
арсить хтмл можно чем-угодно, но если есть код выполняемый в браузере, то стандартные парсилки отпадают.
Мне повезло, просто вся нужная инфа загружаеться вместе со страницей в тэге скрипт в виде хтмл, а потом с помощью js рендериться на страницу, поэтому я просто выбираю то что нужно мне и конвертирую в нужный мне формат
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #14 (permalink)  
Старый 09.09.2014, 01:37
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Народ нужна помощь, щас переехал в другое место жить и пока нет инета, но хочу продолжить работу над проектом как мне сохранить страницу которую я буду парсить что бы я мог её закинуть на локалку. Тупо сохранять через ctrl +s ?
Просто вроде и 4g но я щатал их тарифы...
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #15 (permalink)  
Старый 10.09.2014, 10:33
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Последний вопрос отпал, инет прокат есть)
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #16 (permalink)  
Старый 16.09.2014, 19:25
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

продолжаю колупаться с этой фигней, и короче я не пойму почему так медленно, юзаю jsdom.


Из за чего когда добавляю выборку элементов из не большого блока скорость перебора с 10 секунд увеличиваеться до 900 сек?
И какой есть более быстрый парсер для ноды?
function matchDataToObj ( html, callback ) {

        

        jsdom.env( html, function ( err, window )  {

            var blocks = $( window, "li"), // проблема с перебором блока с 1600 li
                matches = [];

            for( var i = 0; i < blocks.length; i++ ) {
                matches.push( renderDataToObj ( blocks[i] ) );
            }

            callback ( matches );
        } );

    };


    function renderDataToObj ( block ) {
        var obj = {};
            teams = block.getElementsByClassName( "team__link" ), // после добавления этой измения не критичны
            icons = block.getElementsByClassName( "team__icon" ), // тормоза начинаються из за этй строки
            matchUrl = clearPath( block.getElementsByTagName ( "a" )[0].href ); // и этой

        obj.startTime = block.getAttribute( "data-start-time" );
        obj.leagueID = block.getAttribute( "data-league-id" );
        obj.matchURL = path.join ( urlLeague,  matchUrl );
        obj.teams = {
            first: clearPath( teams [0].textContent ),
            second: clearPath( teams [1].textContent )
        };
        obj.icon = {
            firstTeam: path.join ( urlLeague,  getImgSrc ( icons [ 0 ] ) ),
            secondTeam: path.join ( urlLeague, getImgSrc ( icons [ 1 ] ) )
        };


        return obj;
    };


function clearPath ( path ) {

        return path.replace( /^(file:\/)|\s/gi, "" );
    }

    function getImgSrc ( el ) {
        return clearPath( el.getElementsByTagName ( "img" )[0].src );
    }
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #17 (permalink)  
Старый 16.09.2014, 20:13
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от cyber
до 900 сек
А оно нигде не зацикливает?

Ты конечно крут, но проверить не хочешь что a есть?
block.getElementsByTagName ( "a" )[0].href


А че у тебя переменные глобальные?
teams, icons, matchUrl


Видишь тут в конце, вместо запятой что стоит?
var obj = {};


Полегче бы ты присваивал переменные и сразу выборки делал, да еще и обращался по индексу. У тебя проверок никаких нет. А если у тебя undefined прилетит или null, а ты потом его в обработку пустишь. Знаешь какие веселые штуки могут от этого рождаться?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 16.09.2014 в 20:19.
Ответить с цитированием
  #18 (permalink)  
Старый 16.09.2014, 21:29
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Gozar, а нет, то я просто 200 раз уже комметироваз/разкомментировал и не увидел что забыл, не глобальные.
Сообщение от Gozar
Ты конечно крут, но проверить не хочешь что a есть?
block.getElementsByTagName ( "a" )[0].href
ЧТо именно ? Что в href? Это будет но потом.
Сообщение от Gozar
Полегче бы ты присваивал переменные и сразу выборки делал, да еще и обращался по индексу. У тебя проверок никаких нет. А если у тебя undefined прилетит или null, а ты потом его в обработку пустишь. Знаешь какие веселые штуки могут от этого рождаться?
__________________
Проверки будут, но когда я пойму почему оно весит по несколько минут, поэтому разберусь с этим потом буду проверять.

Сообщение от Gozar
А оно нигде не зацикливает?
Не знаю в том и проблема что у меня не зацикливаеться, щас буду искать другой парсер, висеть нначинает после того как начинаю искать элементы по классу через getElementsByClassName или другим способом...
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 16.09.2014 в 21:32.
Ответить с цитированием
  #19 (permalink)  
Старый 16.09.2014, 21:35
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

cyber,
А проверить сколько цикл отматывает никак нельзя? До тебя же доперло откуда тормоза растут, ну и исключай дальше варианты, логируй. Выводи значения...

Мне лень сейчас за тебя думать, у меня и у самого проект сложный, делай дебаг...
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #20 (permalink)  
Старый 16.09.2014, 21:40
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

cyber,
Ты сначала делаешь цикл на 1600
В нем вот такой кошмар:
teams = block.getElementsByClassName( "team__link" ), // после добавления этой измения не критичны
icons = block.getElementsByClassName( "team__icon" ), // тормоза начинаються из за этй строки
matchUrl = clearPath( block.getElementsByTagName ( "a" )[0].href ); // и этой

а потом из этого кошмара ты вызываешь еще один кошмар
el.getElementsByTagName ( "img" )[0].src

Вот оно у тебя и тормозит, я бы тоже тормозил...
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Браузер внутри сайта (аналоги iframe) holop Общие вопросы Javascript 3 10.03.2017 23:56
парсинг сайта aleks_lv Общие вопросы Javascript 9 08.11.2015 18:47
background resize IceDvl jQuery 4 25.04.2014 17:54
парсинг xml с сайта используя js teanrus Общие вопросы Javascript 5 18.12.2012 13:36
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55