jsoup 라이브러리를 사용하여, 특정 홈페이지(웹페이지)내에 존재하는 links를 헤아려보는 샘플 프로그램을 작성 및 수행해 보았습니다.
jsoup은 1.16.2 버전을 사용하였습니다.
<dependency>
<!-- jsoup HTML parser library @ https://jsoup.org/ -->
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.16.2</version>
</dependency>
Text Console 프로그램을 아래와 같이 작성해 보았습니다.
package kr.pe.speech.jsoup;
import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.io.IOException;
@SpringBootApplication
public class JsoupApplication {
public static void main(String[] args) throws IOException {
Validate.isTrue(args.length == 1, "Usage: supply url to fetch");
String url = args[0];
print("Fetching %s...", url);
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href]");
Elements media = doc.select("[src]");
Elements imports = doc.select("link[href]");
print("\nLinks: (%d)", links.size());
for (Element link : links) {
print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35));
}
}
private static void print (String msg, Object...args){
System.out.println(String.format(msg, args));
}
private static String trim (String s,int width){
if (s.length() > width)
return s.substring(0, width - 1) + "...";
else
return s;
}
}
출력결과는 아래와 같습니다.
- 프로그램 코드가 간력합니다
- 수행속도가 타 라이브러리보다 엄청 빠릅니다.
- API Method가 간단 명료한 느낌입니다.
- 중복된 URL을 출력합니다.
Fetching http://speech.pe.kr...
Links: (37)
* a: <http://speech.pe.kr#site-content> (Skip to the content)
* a: <http://speech.pe.kr/> (speech voice AI)
* a: <http://speech.pe.kr/> (홈)
* a: <http://speech.pe.kr/%ec%86%8c%ea%b0%9c/> (소개)
* a: <http://speech.pe.kr/%eb%b8%94%eb%a1%9c%ea%b7%b8/> (블로그)
* a: <http://speech.pe.kr/%eb%ac%b8%ec%9d%98/> (문의)
* a: <http://speech.pe.kr/plans/> (Plans)
* a: <http://speech.pe.kr#weglot_switcher> (Weglot Switcher)
* a: <http://speech.pe.kr/> (홈)
* a: <http://speech.pe.kr/%ec%86%8c%ea%b0%9c/> (소개)
* a: <http://speech.pe.kr/%eb%b8%94%eb%a1%9c%ea%b7%b8/> (블로그)
* a: <http://speech.pe.kr/%eb%ac%b8%ec%9d%98/> (문의)
* a: <http://speech.pe.kr/> (홈)
* a: <http://speech.pe.kr/%ec%86%8c%ea%b0%9c/> (소개)
* a: <http://speech.pe.kr/%eb%b8%94%eb%a1%9c%ea%b7%b8/> (블로그)
* a: <http://speech.pe.kr/%eb%ac%b8%ec%9d%98/> (문의)
* a: <http://speech.pe.kr/plans/> (Plans)
* a: <http://speech.pe.kr#weglot_switcher> (Weglot Switcher)
* a: <https://www.yelp.com> (옐프)
* a: <https://www.facebook.com/wordpress> (페이스북)
* a: <https://twitter.com/wordpress> (트위터)
* a: <https://www.instagram.com/explore/tags/wordcamp/> (인스타그램)
* a: <mailto:wordpress@example.com> (이메일)
* a: <http://speech.pe.kr#post-inner> (Scroll Down)
* a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/> (Read More)
* a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/> (Read More)
* a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/> (Read More)
* a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/> (Read More)
* a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/> (Join the Club)
* a: <https://www.yelp.com> (옐프)
* a: <https://www.facebook.com/wordpress> (페이스북)
* a: <https://twitter.com/wordpress> (트위터)
* a: <https://www.instagram.com/explore/tags/wordcamp/> (인스타그램)
* a: <mailto:wordpress@example.com> (이메일)
* a: <http://speech.pe.kr/> (speech voice AI)
* a: <https://wordpress.org/> (Powered by WordPress)
* a: <http://speech.pe.kr#site-header> (To the top ↑ Up ↑)
'프로그램언어(JAVA , Python)' 카테고리의 다른 글
[Python] Comprehension Expression (0) | 2023.11.22 |
---|---|
[java] jar 파일 실행시키기, 인자와 함께 (0) | 2023.10.25 |
[SSO Login : KakaoLogin] React, kakao (0) | 2023.08.18 |
[결제 기능] React, 아임포트, 신용카드, 결제창 (0) | 2023.08.18 |
H2 database, windows 기본 설치 위치 (0) | 2023.06.30 |