Skip to content

Java를 사용하여 Webスクレイピング을 수행하는 방법에 대한 코드例付きクイックガイド

License

Notifications You must be signed in to change notification settings

bright-kr/java-web-scraping

Repository files navigation

Java-web-scraping

Java를 사용하여 Webスクレイピング을 하는 방법에 대한 코드 예제 포함 빠른 가이드

java web scraping header

일부 사람들은 Python 사용을 선호하지만, 또 다른 인기 있는 옵션은 Java를 활용하여 Webスクレイピング을 수행하는 것입니다. 여기에서는 이를 쉽게 수행하는 방법을 단계별로 안내합니다.

시작하기 전에, Webスクレイピング에 최적의 환경이 되도록 컴퓨터에 다음이 설정되어 있는지 확인합니다:

Java11 - 더 고급 버전도 있지만, 이는 개발자들 사이에서 단연 가장 인기 있는 버전입니다.

Maven – 의존성 관리를 위한 빌드 자동화 도구입니다.

IntelliJ IDEA – IntelliJ IDEA는 Java로 작성된 컴퓨터 소프트웨어를 개발하기 위한 통합 개발 환경입니다.

HtmlUnit – 브라우저 동작 시뮬레이터입니다(예: 폼 제출 시뮬레이션).

다음 명령으로 설치 여부를 확인할 수 있습니다:

  • java -version
  • mvn -v

Alternative Solution

Bright Data's Web Scraping API는 데이터 수집을 위한 완전 자동화 솔루션을 제공합니다. 스크레이퍼를 설정하고 유지 관리하는 복잡함을 건너뛰고, 타겟 사이트, 원하는 データセット, 출력 형식만 정의하면 됩니다. 실시간 구조화 데이터가 필요하든, 예약된 전달이 필요하든, Bright Data의 강력한 도구는 정확성, 확장성, 사용 편의성을 보장합니다. 데이터 운영에서 효율성과 신뢰성을 중시하는 전문가에게 적합합니다.

이제 Java 스크레이퍼로 계속 진행하겠습니다.

Step One: 타겟 페이지 Inspect하기

데이터를 수집하려는 타겟 사이트로 이동한 다음, 아무 곳이나 마우스 오른쪽 버튼을 클릭하고 ‘inspect element’를 눌러 ‘Developer Console’에 접근합니다. 이를 통해 웹 페이지의 HTML에 접근할 수 있습니다.

Step Two: HTML Webスクレイピング 시작하기

IntelliJ IDEA를 열고 Maven 프로젝트를 생성합니다:

intellij IDEA Maven project

Maven 프로젝트에는 pom.xml 파일이 있습니다. pom.xml 파일로 이동한 뒤, 먼저 프로젝트의 JDK 버전을 설정합니다:

<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>11</maven.compiler.source>
		<maven.compiler.target>11</maven.compiler.target>
	</properties>

그런 다음 아래와 같이 pom.xml 파일에 HtmlUnit 의존성을 추가합니다:

<dependencies>
  	<dependency>
  		<groupId>net.sourceforge.htmlunit</groupId>
  		<artifactId>htmlunit</artifactId>
  		<version>2.63.0</version>
  	</dependency>
  </dependencies>

이제 첫 번째 Java 클래스를 작성할 준비가 모두 완료되었습니다. 다음과 같이 새 Java 소스 파일을 생성합니다:

open new java source

애플리케이션을 시작하기 위해 main 메서드를 생성해야 합니다. 다음과 같이 main 메서드를 만듭니다:

public static void main(String[] args) throws IOException {
 }

앱은 이 메서드에서 시작합니다. 이는 애플리케이션 엔트리포인트입니다. 이제 다음과 같이 HtmlUnit import를 사용하여 HTTP request를 보낼 수 있습니다:

import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.*;
import java.io.IOException;
import java.util.List;

이제 다음과 같이 옵션을 설정하여 WebClient를 생성합니다:

private static WebClient createWebClient() {
  	WebClient webClient = new WebClient(BrowserVersion.CHROME);
  	webClient.getOptions().setThrowExceptionOnScriptError(false);
  	webClient.getOptions().setCssEnabled(false);
    webClient.getOptions().setJavaScriptEnabled(false);
  	return webClient;
  }

Step Three: HTML에서 데이터 추출/파싱하기

이제 관심 있는 타겟 가격 데이터를 추출하겠습니다. 이를 수행하기 위해 다음 **HtmlUnit** 내장 명령을 사용합니다. **상품 가격**과 관련된 데이터 포인트의 경우 다음과 같이 보입니다:
WebClient webClient = createWebClient();
	    
		try {
			String link = "https://www.ebay.com/itm/332852436920?epid=108867251&hash=item4d7f8d1fb8:g:cvYAAOSwOIlb0NGY";
			HtmlPage page = webClient.getPage(link);
			
			System.out.println(page.getTitleText());
			
			String xpath = "//*[@id=\"mm-saleDscPrc\"]";			
			HtmlSpan priceDiv = (HtmlSpan) page.getByXPath(xpath).get(0);			
			System.out.println(priceDiv.asNormalizedText());
			
			CsvWriter.writeCsvFile(link, priceDiv.asNormalizedText());
			
		} catch (FailingHttpStatusCodeException | IOException e) {
			e.printStackTrace();
		} finally {
			webClient.close();
		}	

원하는 요소의 XPath를 얻으려면 Developer Console을 사용합니다. Developer Console에서 선택한 섹션을 마우스 오른쪽 버튼으로 클릭하고 “Copy XPath”를 클릭합니다. 이 명령은 선택한 섹션을 XPath 표현식으로 복사합니다:

xpath of element

웹 페이지에는 링크, 텍스트, 그래픽, 테이블이 포함됩니다. 테이블의 XPath를 선택하면 이를 CSV로 내보내고 Microsoft Excel과 같은 프로그램으로 추가 계산 및 분석을 수행할 수 있습니다. 다음 단계에서는 테이블을 CSV 파일로 내보내는 방법을 살펴보겠습니다.

Step Four: 데이터 내보내기

이제 데이터가 파싱되었으므로, 추가 분석을 위해 CSV 형식으로 내보낼 수 있습니다. 이 형식은 Microsoft Excel에서 쉽게 열고 볼 수 있기 때문에 일부 전문가들이 다른 형식보다 선호할 수 있습니다. 이를 수행하기 위해 사용할 커맨드 라인은 다음과 같습니다:
public static void writeCsvFile(String link, String price) throws IOException {
		
		FileWriter recipesFile = new FileWriter("export.csv", true);

		recipesFile.write("link, price\n");

		recipesFile.write(link + ", " + price);

		recipesFile.close();
	}

Conclusion

Java는 다양한 분야의 전문가가 필요한 데이터를 추출하는 데 도움을 줄 수 있지만, Webスクレイピング 과정은 상당히 시간이 많이 걸릴 수 있습니다. 데이터 수집 작업을 완전히 자동화하려면 Bright Data의 Web Scraping API와 같은 도구를 활용할 수 있습니다. 필요한 것은 타겟 사이트와 출력 データセット을 선택한 다음, 원하는 스케줄, 파일 형식, 전달 방법을 선택하는 것뿐입니다.

About

Java를 사용하여 Webスクレイピング을 수행하는 방법에 대한 코드例付きクイックガイド

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published