Продолжаем разбираться в тонкостях использования очень занятного и широко используемого языка программирования Java, который, как мы выяснили, хочешь не хочешь, а знать приходится . Сегодня я намерен попробовать решить с его помощью типичную задачу «скачать страничку из интернета и выдрать данные из нее регулярными выражениями». Если вы посмотрите мои доисторические посты с меткой «Perl» , то обнаружите, что возникают такие задачи сплошь и рядом.

JDK включает в себя классы, позволяющие ходить в интернеты по HTTP , и вроде как они даже способны на такие нетривиальные вещи, как смену User-Agent . Но в настоящих, больших, Java-приложениях все же не рекомендуется их использовать ну хотя бы в силу малой гибкости. Поэтому в рамках данной конкретной заметки мы воспользуемся HTTP-клиентом для Java от компании Apache . Кроме того, нам понадобится несколько дополнительных пакетов того же производителя:

<dependencies >
<dependency >
<groupId > org.apache.httpcomponents </groupId >
<artifactId > httpclient </artifactId >
<version > 4.3.3 </version >
</dependency >
<dependency >
<groupId > org.apache.commons </groupId >
<artifactId > commons-io </artifactId >
<version > 1.3.2 </version >
</dependency >
<dependency >
<groupId > org.apache.commons </groupId >
<artifactId > commons-lang3 </artifactId >
<version > 3.3.2 </version >
</dependency >
</dependencies >

Поскольку новую интересную задачку я придумать не смог, попробуем тупо переписать программу, получающую список наиболее популярных постов за месяц в блоге, который вы сейчас читаете. Ранее такая программа была написана мной на Scala . Я до сих пор использую ее для генерации кода виджета, который вы можете наблюдать в меню сайта. Заодно сравним код на Java с аналогичным кодом на Scala.

Код основного метода:

private static void process ( String domainStr,
String dateStr,
String numberStr ) throws IOException {
String s = getUrl ( «http://www.liveinternet.ru/stat/» + domainStr +
«/pages.html?date=» + dateStr +
«&period=month&total=yes&per_page=100» ) ;
ArrayList < Pair < String , Integer > > pages =
parseLiveinternatStat ( domainStr, s ) ;
int maxNumber = Integer . parseInt ( numberStr ) ;
int currentNumber = 0 ;
System . out . println ( «<ul>» ) ;
for ( Pair < String , Integer > p : pages ) {
String url = p. getLeft ( ) ;
int views = p. getRight ( ) ;
String title = getPageTitle ( url ) ;
String end = ending ( views ) ;
System . out . printf ( «<li><a href= » %s «» >%s</a> %d просмотр%s «» +
«»за месяц</a></li> n «» urltitleviews
admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

4 дня ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

4 дня ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

4 дня ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

4 дня ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

4 дня ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

4 дня ago