03.09.2014, 20:53
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от cyber
|
если эта штука будет быстрее jsdom, то кул, а так не вижу особо смысла
|
Значит ты ничего серьезного еще не парсил. Парсить хтмл можно чем-угодно, но если есть код выполняемый в браузере, то стандартные парсилки отпадают. Особенно если нужно спарсить код сгенерированный по клику или стоят какие-нибудь заковыканые проверки на браузер.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
03.09.2014, 20:59
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
В линуксе кстати есть хитрый способ, чтобы спарсить даже флешь , но больно он уж хитрый.
Нужна интеграция шелл скриптов с юзерскриптами через XPCOM и можно творить чудеса. Разворачиваем браузер на весь экран и кликаем куда нужно с помощью шела. В общем полная жесть.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
04.09.2014, 17:17
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Gozar
|
арсить хтмл можно чем-угодно, но если есть код выполняемый в браузере, то стандартные парсилки отпадают.
|
Мне повезло, просто вся нужная инфа загружаеться вместе со страницей в тэге скрипт в виде хтмл, а потом с помощью js рендериться на страницу, поэтому я просто выбираю то что нужно мне и конвертирую в нужный мне формат
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.09.2014, 01:37
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Народ нужна помощь, щас переехал в другое место жить и пока нет инета, но хочу продолжить работу над проектом как мне сохранить страницу которую я буду парсить что бы я мог её закинуть на локалку. Тупо сохранять через ctrl +s ?
Просто вроде и 4g но я щатал их тарифы...
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
10.09.2014, 10:33
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Последний вопрос отпал, инет прокат есть)
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
16.09.2014, 19:25
|
|
I am Student
|
|
Регистрация: 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 );
}
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
16.09.2014, 20:13
|
|
猫
|
|
Регистрация: 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.
|
|
16.09.2014, 21:29
|
|
I am Student
|
|
Регистрация: 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.
|
|
16.09.2014, 21:35
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
cyber,
А проверить сколько цикл отматывает никак нельзя? До тебя же доперло откуда тормоза растут, ну и исключай дальше варианты, логируй. Выводи значения...
Мне лень сейчас за тебя думать, у меня и у самого проект сложный, делай дебаг...
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
16.09.2014, 21:40
|
|
猫
|
|
Регистрация: 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.
|
|
|
|