효율적인 Java 크롤러 실습: 웹 데이터 크롤링 기술 공유
Java 크롤러 실습: 웹 페이지 데이터를 효율적으로 크롤링하는 방법
소개:
인터넷의 급속한 발전으로 인해 수많은 웹 페이지에 귀중한 데이터가 대량으로 저장됩니다. 이 데이터를 얻으려면 각 웹 페이지에 수동으로 액세스하여 정보를 하나씩 추출해야 하는 경우가 많으며 이는 의심할 여지 없이 지루하고 시간이 많이 걸리는 작업입니다. 이 문제를 해결하기 위해 사람들은 다양한 크롤러 도구를 개발했으며 그중 Java 크롤러가 가장 일반적으로 사용되는 것 중 하나입니다. 이 기사에서는 독자들이 Java를 사용하여 효율적인 웹 크롤러를 작성하는 방법을 이해하고 특정 코드 예제를 통해 실습을 보여줄 것입니다.
1. 크롤러의 기본 원리
웹 크롤러의 기본 원리는 브라우저를 시뮬레이션하여 HTTP 요청을 보낸 후 웹 페이지를 구문 분석하고 필요한 데이터를 추출하는 것입니다. 작업 프로세스는 대략 다음 단계로 나뉩니다.
- HTTP 요청 보내기: HttpURLConnection, HttpClient 등과 같은 Java의 네트워크 프로그래밍 라이브러리를 사용하여 HTTP 요청을 구성하고 대상 웹 페이지로 보냅니다.
- 웹 페이지 구문 분석: 웹 페이지 구조에 따라 Jsoup, XPath 등과 같은 적절한 구문 분석 라이브러리를 사용하여 HTML, XML 또는 JSON 형식의 웹 페이지를 구문 분석하고 필요한 데이터를 추출합니다.
- 데이터 처리 및 저장: 추출된 데이터를 정리, 필터링 등 처리한 후 후속 사용을 위해 데이터베이스, 파일 또는 메모리에 저장합니다.
2. 크롤러 개발 환경 생성
Java 크롤러 개발을 시작하려면 해당 환경을 구축해야 합니다. 먼저 JDK(Java Development Kit)와 Eclipse, IntelliJ IDEA 등 Java IDE(통합 개발 환경)가 설치되어 있는지 확인하세요. 그런 다음 HttpClient, Jsoup 등과 같은 필수 네트워크 프로그래밍 라이브러리를 프로젝트에 도입합니다.
3. 실습: Douban 영화 순위 데이터 가져오기
크롤러 개발 프로세스를 연습하기 위해 Douban 영화 순위 데이터를 예로 선택했습니다. 우리의 목표는 영화 이름, 평점, 리뷰어 수를 추출하는 것입니다.
- HTTP 요청 보내기
먼저 웹 페이지의 콘텐츠를 가져오기 위해 Java의 네트워크 프로그래밍 라이브러리를 사용하여 HTTP 요청을 보내야 합니다. 다음은 HttpClient 라이브러리를 사용하여 GET 요청을 보내는 샘플 코드입니다.
import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class HttpClientExample { public static void main(String[] args) { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("https://movie.douban.com/top250"); try (CloseableHttpResponse response = httpClient.execute(httpGet)){ HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } } }
- 웹 페이지 구문 분석
HTTP 요청을 보내 Douban 영화 순위의 웹 콘텐츠를 얻었습니다. 다음으로, 필요한 데이터를 추출하기 위해 구문 분석 라이브러리를 사용해야 합니다. 다음은 Jsoup 라이브러리를 사용하여 HTML 페이지를 구문 분석하기 위한 샘플 코드입니다.
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JsoupExample { public static void main(String[] args) { try { Document document = Jsoup.connect("https://movie.douban.com/top250").get(); Elements elements = document.select("ol.grid_view li"); for (Element element : elements) { String title = element.select(".title").text(); String rating = element.select(".rating_num").text(); String votes = element.select(".star span:nth-child(4)").text(); System.out.println("电影名称:" + title); System.out.println("评分:" + rating); System.out.println("评价人数:" + votes); System.out.println("-------------------------"); } } catch (Exception e) { e.printStackTrace(); } } }
- 데이터 처리 및 저장
실제 애플리케이션에서는 추출된 데이터를 추가로 처리하고 저장해야 할 수도 있습니다. 예를 들어, 나중에 사용할 수 있도록 데이터를 데이터베이스에 저장할 수 있습니다. 다음은 MySQL 데이터베이스를 사용하여 데이터를 저장하는 샘플 코드입니다.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DataProcessingExample { public static void main(String[] args) { String jdbcUrl = "jdbc:mysql://localhost:3306/spider"; String username = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) { String sql = "INSERT INTO movie (title, rating, votes) VALUES (?, ?, ?)"; PreparedStatement statement = conn.prepareStatement(sql); // 假设从网页中获取到了以下数据 String title = "肖申克的救赎"; String rating = "9.7"; String votes = "2404447"; statement.setString(1, title); statement.setString(2, rating); statement.setString(3, votes); int rowsAffected = statement.executeUpdate(); System.out.println("插入了 " + rowsAffected + " 条数据"); } catch (SQLException e) { e.printStackTrace(); } } }
IV. 요약
이 기사에서는 Java 크롤러의 기본 원리를 소개하고 특정 코드 예제를 통해 Java를 사용하여 효율적인 웹 크롤러를 작성하는 방법을 보여줍니다. 이러한 기본 지식을 학습함으로써 독자는 실제 요구에 따라 보다 복잡하고 유연한 크롤러 프로그램을 개발할 수 있습니다. 실제 적용에서는 법적 분쟁을 피하기 위해 크롤러의 합법적인 사용에 주의를 기울이고 웹사이트의 개인 정보 보호 정책과 서비스 약관을 존중해야 합니다. 이 기사가 독자들이 Java 크롤러를 학습하고 적용하는 데 도움이 되기를 바랍니다.
위 내용은 효율적인 Java 크롤러 실습: 웹 데이터 크롤링 기술 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Adeadlockinjavaoccurswhentwoormorethreadsareblockedsforever,, 일반적으로, 일반적으로 duetocircularwaitcausedbyinconsentlockordering; thiscanbeptrededbectedbectedbectedbectedbectedbectefeartefournecessaryconditions —MutualExclusion, holdandwait, nopualwait, nopualclusion, nopualclusion
![현재 NVIDIA GPU에 첨부 된 디스플레이를 사용하고 있지 않습니다 [고정].](https://img.php.cn/upload/article/001/431/639/175553352135306.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
ifyousee "YourEnotusingAdisplayAttachedToannvidiagpu,"YourMonitorIsConnectedTothenVidiagpupport, configuredisplaysettingsinnvidiacontrolpanel, updatedRiversUsingDduandcleanInstall, 및 setTheprestOdcreteinbios/uefi

useOptional.empty (), 옵션.의 (), andoptional.ofnullable () theCreateOptionalInstancesDependingOnsabsent, non-null, orpossiblynull.2.checkforvaluessafelyusingispresent () orpreferlyinglioid () toaviDIDHECK.3

theoilpaintfilterinphotoshopisgreyedoutus는 compatibledocumentoRlayertype를 incizeofindphotoshopcs6orlaterinthefulldesktopversion을 보장하고, mode 및 mouctipixureapioreapeLay ray를 확인합니다

제공자 메커니즘을 통해 알고리즘을 구현하는 MessageDigest, Cipher, Keygenerator, Securandom, Signature, Keystore 등과 같은 JCA 핵심 구성 요소를 이해합니다. 2. SHA-256/SHA-512, AES (256 비트 키, GCM 모드), RSA (2048 비트 이상) 및 Securerandom과 같은 강력한 알고리즘 및 매개 변수를 사용하십시오. 3. 하드 코딩 된 키를 피하고 KeyStore를 사용하여 키를 관리하고 PBKDF2와 같은 안전하게 파생 된 암호를 통해 키를 생성합니다. 4. ECB 모드 비활성화, GCM과 같은 인증 암호화 모드를 채택하고 각 암호화에 고유 한 IV를 사용하고 민감한 민감한 IV를 시간에 사용하십시오.

micronautisidealforbuildingcloud-nativejavaapplicationsduetoitslowmemoryfootprint, faststartuptimes 및 compile-timedectional encection, mateituperiortotraditionalframslikespringbootformicroservices, andserverlessenvonderments.1.microna

SpringDataJPA 및 최대 절전 모드의 핵심은 다음과 같습니다. 1. JPA는 사양이고 최대 절전 모드는 구현, SpringDataJPA 캡슐화는 DAO 개발을 단순화합니다. 2. 엔티티 클래스 @entity, @id, @column 등을 통해 데이터베이스 구조를 맵핑합니다. 3. 저장소 인터페이스는 JParePository를 상속하여 CRUD 및 명명 된 쿼리 메소드를 자동으로 구현합니다. 4. 복잡한 쿼리 @Query 주석을 사용하여 JPQL 또는 기본 SQL을 지원합니다. 5. SpringBoot에서는 스타터 종속성을 추가하고 데이터 소스 및 JPA 속성을 구성하여 통합이 완료됩니다. 6. 거래는 @transactiona에 의해 이루어집니다

runeApplicationOrCommandAsAdMinistratorByright-Clicking andSelecting "RunasAdMinStrator"TONESUREELEVATEDPRIVILEGESERANTED.2.CHECKUSERACCOUNTCONTROL (UAC) SETCTINGSBYSERCHINGFORUACINTHARTMENUANDSTITTINGTHETEDEFAULLEVEL (SecondFrff
