URL https://news.naver.com/ 네이버 뉴스 정치, 경제, 사회, 생활/문화, 세계, IT/과학 등 언론사별, 분야별 뉴스 기사 제공 news.naver.com URL 분석 네이버 뉴스의 URL을 보면 정치뉴스부터 sid1의 값이 1씩 규칙적으로 증가하는 것을 볼 수 있습니다. 코드 구현 public class Crawling { public static void main(String[] args) { final String url = "https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1="; for (int i = 100; i < 106; i++) { // 100 ~ 105 Connection conn = Jsoup.connec..
웹 크롤링 크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위입니다. 크롤링하는 소프트웨어는 크롤러(crawler)라고 부릅니다. 스크래핑 넓은 의미로는 웹 페이지의 정보를 수집하는 일련의 행위를 가리킵니다. 따라서 크롤링은 스크래핑의 한 종류로 분류할 수 있습니다. 좁은 의미로는 특정한 웹 페이지에서 원하는 데이터 일부를 가져오는 것을 일컫습니다. 크롤링 크롤링은 구글, 네이버와같은 검색 포털에서 수행되며, 웹페이지의 정보를 수집하고 분류해서 데이터 베이스화합니다. 데이터를 수집하는 소프트웨어를 크롤러(crawler) 혹은 봇(bot)이라고 부릅니다. 봇은 개인이 작성한 블로그, 뉴스 기사 등의 페이지를 모두 방문해서 문서가 어디에..
Section19 파일 입출력 스트림 자바프로그래밍이 디스크에 접근하여 파일을 읽고 쓰는 통로를 스트림이라고 합니다. 스트림은 단반향이며 입력과 출력을 위한 스트림이 각각 따로 존재합니다. 바이트 기반 스트림 파일 형식에 구애받지 않고 모든 파일을 읽고 쓸 수 있습니다. 바이트 기반 입력 스트림의 최상위 클래스로 InputStream이 있으며, 바이트 기반 출력 스트림의 최상위 클래스로 OutputStream이 있습니다. 문자 기반 스트림 문자를 기반으로 하기 때문에 텍스트 문서만을 읽고 쓸 수 있습니다. 문자 기반 입력 스트림의 최상위 클래스로 Reader가 있으며 문자 기반 출력 스트림의 최상위 클래스로 Writer가 있습니다. 기반 스트림과 보조 스트림 기반 스트림 : 대상에 직접 자료를 읽고 쓰는..
Section18 스레드 프로세스 프로세스란 프로그램이 동작하여 메모리에 올려진 상태를 말하며 실행 중인 프로그램을 의미합니다. 스레드 스레드는 프로세스 내에서 독립적으로 실행되는 작업 단위를 의미합니다. 프로세스 내의 주소 공간이나 자원들과 같은 스레드끼리 공유하면서 실행됩니다. 멀티 스레드 스레드는 임의의 클래스에 Thread 클래스를 상속하거나 Runnable 인터페이스를 상속하여 구현할 수 있는데, 하나의 프로세스 안에서 스레드를 여러 개 선언하여 멀티 스레드를 사용할 수 있습니다. 동기화 메서드 멀티 스레드를 구현할 경우, 스레드의 동작 순서와 자원 공유를 위해 스레드 동기화를 통해 기능을 구현합니다. 스레드 객체 내부의 동기화 메서드를 실행하면 다른 스레드가 동기화 메서드를 실행하지 못하도록 ..
Section17 람다식 람다식 JDK 1.8부터 자바에서 지원하는 함수형 프로그래밍을 람다식(Lambda expression)이라고 합니다. 람다식은 함수의 이름이 없는 익명 함수(anonymous function)를 만들기 위한 표현식입니다. 람다식은 '익명 함수' 답게 메서드의 이름과 반환 타입을 제거하고 화살표 기호(→)를 사용해 구현합니다. 메서드를 람다식으로 표현하면 다음과 같습니다. 메서드 람다식 int sum (int a, int b) { return a + b; } (int a, int b) → {return a + b}; (int a, int b) → a + b; (a, b) → a + b; int sum (int a, int b) { int result = a + b; return r..
Section16 컬렉션 프레임워크 컬렉션 프레임워크 컬렉션 프레임워크 데이터를 다룰 때 사용되는 주요 자료구조를 말합니다. 컬렉션은 기존의 List, Map, Set 등의 자료 구조를 뜻하고 프레임워크는 클래스와 인터페이스를 묶어 놓은 개념입니다. List 컬렉션 배열과 비슷하게 index로 객체를 관리합니다. 다만, 배열과는 다르게 크기의 제한이 없으며 삽입, 삭제, 변경의 기능이 자유롭습니다. List에는 대표적으로 ArrayList와 LinkedList 가 있습니다. ArrayList 데이터를 순차적으로 저장합니다. 데이터가 삽입될 때마다 크기가 증가하고 배열을 삭제하면 공간이 줄어듭니다. index를 기준으로 값을 삽입하거나 추출합니다. LinkedList Node 객체를 기반으로 데이터를 저장..