Comments 23
Написал ниже.
Спасибо за иконку! Заинтересовался, что за она, посмотрел адрес — и открыл для себя новый сервис гугла :)
(А на хабре о нём рассказывали ровно год назад.)
(А на хабре о нём рассказывали ровно год назад.)
Спасибо за иконку! Заинтересовался, что за она, посмотрел адрес — и открыл для себя новый сервис гугла :)
(А на хабре о нём рассказывали ровно год назад.)
P.S. Похоже, комментарии добавляются куда попало.
(А на хабре о нём рассказывали ровно год назад.)
P.S. Похоже, комментарии добавляются куда попало.
Лолшто?
Драйвер там подгружается.
Драйвер там подгружается.
OMG! text.indexOf()? Почему не регекспы? Или почему не DOM?
Мне приходилось решать такую задачу (и прокси парсил, и сайты) — очень помог jTity, код получается проще и понятнее чем на регэкспах. И уж точно проще и понятнее, чем такой вот странный разбор строк.
Мне приходилось решать такую задачу (и прокси парсил, и сайты) — очень помог jTity, код получается проще и понятнее чем на регэкспах. И уж точно проще и понятнее, чем такой вот странный разбор строк.
Ну я был еще маленький и неопытный неделю назад. Та часть, что лезет на nic.ru уже через регэкспы сделана.
Вообще говоря код даже получился очень даже не очень… st.close(); и conn.close(); принято делать в finally, и это неспроста так принято ;). Присвоения в условиях типа while ((line = reader.readLine()) != null) тоже обычно не приветствуются. Функция removeChar() написана крайне странно. Почему не foreach? И почему е используется StringBuilder/StringBuffer, ведь насколько я понимаю в данном случае ничего компилятором оптимизировано не будет, и на каждую итерацию будет создаваться новый объект String! Это я уже молчу про то, что можно просто .replace() сделать. PreparedStatement'ы где? Ну я понимаю что код «для себя», но все равно, какой смысл приучаться делать неправильно?!
>>Присвоения в условиях типа while ((line = reader.readLine()) != null) тоже обычно не приветствуются
Это почему же?
Это почему же?
В основном потому, что если условие будет немного сложнее != null, то момент присвоения может зрительно потеряться. Или еще хуже — если глядя на чужой код будет неясно, опечатка это (должно быть сравнение) или так и задумано? В данном случае — да, сэкономили строчку (надо было бы делать присвоение и до цикла, и внутри него), но я стараюсь так не писать.
Спасибо за тему. Как раз изучаю Java.
Месяц назад тут обсуждали граббинг Google Maps с обходом подобной защиты через TOR.
Сам писал несколько раз прокси краулеры – потому и запомнил. По мне так TOR куда более технологичное и надёжное решение.
Сам писал несколько раз прокси краулеры – потому и запомнил. По мне так TOR куда более технологичное и надёжное решение.
TOR
и никаких велосипедов с парсингом
и никаких велосипедов с парсингом
А зачем ты всегда загоняешь null в переменную, которая и так null? =)
// String host = null;
// String port = null;
Не критично конечно, просто сразу в глаза бросилось, потеря времени только имхо.
Ну и всегда приятней работать с нормальными объектами, вместо того чтобы обрабатывать поток символов.
В частности, выгрузить табличку и ходить по её полям.
simple.sourceforge.net/
xstream.codehaus.org/
// String host = null;
// String port = null;
Не критично конечно, просто сразу в глаза бросилось, потеря времени только имхо.
Ну и всегда приятней работать с нормальными объектами, вместо того чтобы обрабатывать поток символов.
В частности, выгрузить табличку и ходить по её полям.
simple.sourceforge.net/
xstream.codehaus.org/
«А зачем ты всегда загоняешь null в переменную, которая и так null? =)
// String host = null;
// String port = null;»
Тут вы ошибаетесь. Конструкция String host; внутри метода (не как параметр класса) даст ошибку при обращении к ней — 'переменная 'host' не инициализирована'
// String host = null;
// String port = null;»
Тут вы ошибаетесь. Конструкция String host; внутри метода (не как параметр класса) даст ошибку при обращении к ней — 'переменная 'host' не инициализирована'
Ок, поспешил с утра, но он всё равно загоняет в неё содержимое позже, дк зачем её нулём инициализировать в начале?
Естественно, что он её инициализирует чемнить перед тем, как в метод загонять.
// String host = null;
// host = text.substring(cursor, text.indexOf("<script type=\«text/javascript\»>", cursor));
// System.out.println(«Added: „+host+“:»+port);
// HTML это производная XML
XHTML — www.w3schools.com/xhtml/xhtml_intro.asp
Естественно, что он её инициализирует чемнить перед тем, как в метод загонять.
// String host = null;
// host = text.substring(cursor, text.indexOf("<script type=\«text/javascript\»>", cursor));
// System.out.println(«Added: „+host+“:»+port);
// HTML это производная XML
XHTML — www.w3schools.com/xhtml/xhtml_intro.asp
Ничего себе… какой у вас велосипед. Таким не стоит хвастаться. Модели нет, парсинг просто ужас. Представьте на секунду, что структура HTML изменится, придется все переделывать.
HTML это производная XML, а это значит что его можно разпарсить инструментами разработанными для этого. К примеру JDOM.
HTML это производная XML, а это значит что его можно разпарсить инструментами разработанными для этого. К примеру JDOM.
Писать скрипты на java — не самая умная затея. Рекомендую груви, где ровно для тех же задач можно написать в 4 раза меньше кода.
Sign up to leave a comment.
Пишем парсер на Java + MySQL