JavaRush/Java блог/Архив info.javarush/Вытягиваем статистику из странички "Мои новости"
ArtemShch
34 уровень

Вытягиваем статистику из странички "Мои новости"

Статья из группы Архив info.javarush
участников
Прочитав про "Самую бесполезную программу" захотелось и себе че-нить написать. Читая очередные истории успеха, заметил, что народ задает одни и те же вопросы и из рассказов новоиспеченных программистов не все так ясно, как хотелось бы. Вот я и предпринял попытку написать парсер новостной ленты. Вот что выводит айдия для моих новостей))) Зарегистрировался в JavaRush 2015-09-01 числа За 289 дней было решено 227 задач Первой решил задачу level00,lesson02,task01 с 5 раза! - 2015-09-01 числа Последней решил задачу level27,lesson15,big15 с 8 раза! - 2016-06-16 числа Максимальный уровень решенной задачи - 30 Больше всего ушло нервов на задачу level02,lesson08,task06 с 35 раза! поддалась Самый длительный перерыв между решением задач c 2015-10-15 по 2016-02-11 (119) дней Очень даже информативненько получилось)) (на 4 месяца!!! забил ото дал так дал))) возможно если следующий автор истории успеха, вставит такой отчет в рассказ, история будет более наглядной. Если кому-то не лень: 1. Подскажите как вытащить инфу прям с сайта, мне пришлось копировать таблицу в .txt и с ним дальше работать. 2.Попробовать у себя и отписаться про ошибки или предложения к изменению кода (если айдия несет чушь кидайте в личку свой .txt, допилим родненькую) ссылка на гит Это выглядит так: Копируем новости в файл, в моем случае News.txt 1 Артем 2016-06-18 17:34:51 Артем снова заходит в игру, чтобы немного поразмяться. ..... 10 Артем 2016-06-16 09:45:04 Артем решил задачу level27,lesson15,big15 с 8 раза! ..... //Вот тут вставляем путь к файлу и запускаем public class JustDoIt { public static void main(String[] args) throws IOException, ParseException { Statistic statistic = new Statistic("E:\\IntelliJ\\JavaRushHomeWork\\src\\News.txt"); System.out.println(statistic); } } Пишу в час ночи, извиняйте за орфографию и всякие непотребства)
Комментарии (12)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ArtemShch
Уровень 34
20 июня 2016, 08:51
Спасибо за коментарии, это была моя первая попытка, что то написать самостоятельно.Попробую переосмыслить код согласно советам. Но все же непонятно как вытаскивать инфу прям с сайта.
Leckter13
Уровень 23
20 июня 2016, 09:51
А вот тут же была статья как разобрать сайт с помощью Jsoup — жми сюда
ArtemShch
Уровень 34
20 июня 2016, 21:41
Я так понимаю Jsoup тут не поможет, так как новости генерируются динамически js'ом.
blacky
Уровень 23
20 июня 2016, 22:58
phantomJS
AndreGold
Уровень 28
20 июня 2016, 01:18
По коду
1) Нужно давать названия классов осмысленные имена, чтобы было понятно, что делает конкретный класс.Я бы главный класс, который запускает Вашу программу назвал бы Main или Starter, ну или как-то более понятно, что он запускает программу.

2) Нет разделения по пакетам(оно есть, но не так сильно, как хотелось бы), и это плохо. Как бы странно не звучало, но здесь можно пролипить MVC шаблон. Даже если Вы его зделаете неправильно, а с вероятностью % 90-95 оно так и будет, с шаблоном Вы все-таки познакомитесь.

3) Какие цели преследуют классы Statistic и Parser, и есть ли смысл в каком то из них?

4)у Date, около 80% методов Deprecated и он сам по себе Mutable, его лучше не использовать, вместо него лучше использовать java.time API из Java 8.

5) Желательно(это в смысле по желанию, можно, но на первых порах пока рановато) использовать тестирование и библиотеки, JUnit и Mockito. По своему опыту обучения и написания кода знаю, что к плохому коду тесты невозможно написать, если мы конечно не говорим о подгонке тестов под код.
IgorBrest
Уровень 33
20 июня 2016, 00:34
Дарю автору топика одну идею. Суть вот в чем. Думаю, что все согласятся, что самая ценная вещь на джавараш — это задачи. Тут огромное количество задач самых разных уровней и категорий, на всевозможные темы… идея в том, что бы пропарсить все свои решенные задачи. Например повытаскивать условие задач, организовать контекстный поиск, перегруппировать… Например, захотите повторить про Executor, BlockingQueue… в каких задачах они встречались?, а еще задачка была, где метод писали что бы строку из Windows 1251 в UTF-8 перевести?.. ну вы поняли. Для начала это все можно организовать на уровне input-output файловой системы… а вообще, не плохой плагинчик к idea получился бы )))
AndreGold
Уровень 28
20 июня 2016, 01:18
извиняюсь, не в ту ветку написал))
ArtemShch
Уровень 34
20 июня 2016, 09:29
Спасибо, попытаюсь реализовать:-)
Denk
Уровень 27
28 июня 2016, 06:12
Это можно проще реализовать. Просто переименовать классы решений, соответственно и сами файлы, уже решенные конечно. Сейчас они в основном Solution, переименовать во что-то подходящее по смыслу задания например — FileTwoReadFileOneWrite. Тут каждому индивидуально. А потом обычный поиск IDEA.
IgorBrest
Уровень 33
28 июня 2016, 11:46
А сколько задач у тебя уже решено? меньше тысячи? Ну первые уровни можно и откинуть… Думаю, что всеравно сотня-другая задач должна насобираться- не меньше. И переименовывать каждый класс… причем в некоторых задачах несколько классов… аккуратно отрефакторить… И в каждое название класса надо впихнуть достаточно разнообразной информации для поиска… Ну вообщем, как вариант.
AndreGold
Уровень 28
19 июня 2016, 22:13
Напишите обычный CRUD — это даст Вам больше, чем всякие програмульки.
blacky
Уровень 23
19 июня 2016, 22:29
Согласен.
А вот список кейвордов для парсинга: jsoup, http-client, DOM, curl, wget, StAX, SAX, JDOM, XPath, XQuery