08.11.2012 18:10
0 44 4
Ложка дёгтя
Обратим внимание на один момент в коде:
if (line.indexOf("mailto=") > -1)
Напомню, это условие для поиска ника на странице персонажа. Это кусочек кнопки "написать письмо". Казалось бы, что в этом плохого? А то, что этой кнопки нет для заблокированных персонажей. Соответственно, если у персанажа есть достижение тыквика, но он заблокирован, то он попадёт в список, но без ника, и достижение будет в первом столбике - где ники ещё живых.
UPD: Такая кнопка у заблокированных всё-таки есть. Спасибо келл за поправку!
Ещё одна возможная проблема: текст, по которому мы ищем ник и достижение могут встретиться в информации персонажа. Не слишком критично, если какая-то ненужная информация попадёт в ещё один столбик, но если в связи с этим произойдёт ошибка и достижение этого персонажа не попадёт в наш файл, будет неприятно. Один из вариантов защиты от таких ошибок показан здесь:
if (line.indexOf("'") > 0) line = line.substring(0, line.indexOf("'"));
else continue;
"mailto=" мы встретили, но если после ника нет закрывающего символа - апострофа - мы ничего не добавляем в переменную buffer.
Другой вариант - проверять, когда начинается личная информация, и после этого никак строки не обрабатывать, просто догрузить страницу и перейти к следующей.
Очередной минус этого бота (если сравнивать с встраиваемыми в браузер скриптами) - его не просто приспособить для решения других задач. Он может беспрепятственно гулять по страницам персонажей или на форуме, но в протокол передач, к примеру, попасть не сможет. Для этого сначала нужно зарегистрироваться. А для этого нужно ввести логин-праоль и нажать кнопку "Войти". Как я уже говорил, это выходит за рамки этой темы, хотя технически никаких проблем тут нет. К тому же зарегистрированный бот будет имитировать присутствие игрока, а это запрещено правилами игры.
if (line.indexOf("mailto=") > -1)
Напомню, это условие для поиска ника на странице персонажа. Это кусочек кнопки "написать письмо". Казалось бы, что в этом плохого? А то, что этой кнопки нет для заблокированных персонажей. Соответственно, если у персанажа есть достижение тыквика, но он заблокирован, то он попадёт в список, но без ника, и достижение будет в первом столбике - где ники ещё живых.
UPD: Такая кнопка у заблокированных всё-таки есть. Спасибо келл за поправку!
Ещё одна возможная проблема: текст, по которому мы ищем ник и достижение могут встретиться в информации персонажа. Не слишком критично, если какая-то ненужная информация попадёт в ещё один столбик, но если в связи с этим произойдёт ошибка и достижение этого персонажа не попадёт в наш файл, будет неприятно. Один из вариантов защиты от таких ошибок показан здесь:
if (line.indexOf("'") > 0) line = line.substring(0, line.indexOf("'"));
else continue;
"mailto=" мы встретили, но если после ника нет закрывающего символа - апострофа - мы ничего не добавляем в переменную buffer.
Другой вариант - проверять, когда начинается личная информация, и после этого никак строки не обрабатывать, просто догрузить страницу и перейти к следующей.
Очередной минус этого бота (если сравнивать с встраиваемыми в браузер скриптами) - его не просто приспособить для решения других задач. Он может беспрепятственно гулять по страницам персонажей или на форуме, но в протокол передач, к примеру, попасть не сможет. Для этого сначала нужно зарегистрироваться. А для этого нужно ввести логин-праоль и нажать кнопку "Войти". Как я уже говорил, это выходит за рамки этой темы, хотя технически никаких проблем тут нет. К тому же зарегистрированный бот будет имитировать присутствие игрока, а это запрещено правилами игры.