Цитата:
|
В линуксе кстати есть хитрый способ, чтобы спарсить даже флешь :), но больно он уж хитрый.
Нужна интеграция шелл скриптов с юзерскриптами через XPCOM и можно творить чудеса. Разворачиваем браузер на весь экран и кликаем куда нужно с помощью шела. В общем полная жесть. :D |
Цитата:
|
Народ нужна помощь, щас переехал в другое место жить и пока нет инета, но хочу продолжить работу над проектом как мне сохранить страницу которую я буду парсить что бы я мог её закинуть на локалку. Тупо сохранять через ctrl +s ?
Просто вроде и 4g но я щатал их тарифы... |
Последний вопрос отпал, инет прокат есть)
|
продолжаю колупаться с этой фигней, и короче я не пойму почему так медленно, юзаю 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 ); } |
Цитата:
Ты конечно крут, но проверить не хочешь что a есть? :) block.getElementsByTagName ( "a" )[0].href А че у тебя переменные глобальные? teams, icons, matchUrl Видишь тут в конце, вместо запятой что стоит? var obj = {}; Полегче бы ты присваивал переменные и сразу выборки делал, да еще и обращался по индексу. У тебя проверок никаких нет. А если у тебя undefined прилетит или null, а ты потом его в обработку пустишь. Знаешь какие веселые штуки могут от этого рождаться? ;) |
Gozar, а нет, то я просто 200 раз уже комметироваз/разкомментировал и не увидел что забыл, не глобальные.
Цитата:
Цитата:
Цитата:
|
cyber,
А проверить сколько цикл отматывает никак нельзя? До тебя же доперло откуда тормоза растут, ну и исключай дальше варианты, логируй. Выводи значения... Мне лень сейчас за тебя думать, у меня и у самого проект сложный, делай дебаг... |
cyber,
Ты сначала делаешь цикл на 1600 В нем вот такой кошмар: teams = block.getElementsByClassName( "team__link" ), // после добавления этой измения не критичны icons = block.getElementsByClassName( "team__icon" ), // тормоза начинаються из за этй строки matchUrl = clearPath( block.getElementsByTagName ( "a" )[0].href ); // и этой а потом из этого кошмара ты вызываешь еще один кошмар el.getElementsByTagName ( "img" )[0].src Вот оно у тебя и тормозит, я бы тоже тормозил... :D |
Часовой пояс GMT +3, время: 15:30. |