developer tip

자바로 웹 스크래핑

copycodes 2020. 10. 29. 08:17
반응형

자바로 웹 스크래핑


좋은 웹 스크래핑 Java 기반 API를 찾을 수 없습니다. 스크랩해야하는 사이트는 API도 제공하지 않습니다. 일부를 사용하여 모든 웹 페이지를 반복 pageID하고 DOM 트리에서 HTML 제목 / 기타 항목을 추출하고 싶습니다 .

웹 스크래핑 외에 다른 방법이 있습니까?


jsoup

제목을 추출하는 것은 어렵지 않으며 많은 옵션이 있습니다. 여기 Stack Overflow에서 " Java HTML 파서 " 를 검색하십시오 . 그들 중 하나는 Jsoup 입니다.

페이지 구조를 알고 있으면 DOM을 사용하여 페이지를 탐색 할 수 있습니다. http://jsoup.org/cookbook/extracting-data/dom-navigation을 참조하십시오.

좋은 라이브러리이고 지난 프로젝트에서 사용했습니다.


가장 좋은 방법은 Selenium Web Driver를 사용하는 것입니다.

  1. 코더에게 시각적 피드백을 제공합니다 (스크랩이 작동 중인지 확인하고 중지되는 위치 확인).
  2. 사용하는 브라우저를 직접 제어하므로 정확하고 일관됩니다.
  3. 느린. HtmlUnit과 같은 웹 페이지를 공격하지는 않지만 때로는 너무 빨리 공격하고 싶지 않습니다.

    Htmlunit은 빠르지 만 Javascript 및 AJAX를 처리하는 데는 끔찍합니다.


HTMLUnit 은 웹 스크래핑을 수행하는 데 사용할 수 있으며 페이지 호출, 양식 작성 및 제출을 지원합니다. 내 프로젝트에서 이것을 사용했습니다. 웹 스크래핑을위한 좋은 자바 라이브러리입니다. 자세한 내용은 여기를 참조하십시오.


mechanize for Java는 이에 적합하며 Wadjy Essam이 언급했듯이 HMLT에 JSoup을 사용합니다. mechanize는 탐색, 양식 제출 및 페이지 스크래핑을 지원하는 단계적 HTTP / HTML 클라이언트입니다.

http://gistlabs.com/software/mechanize-for-java/ (및 GitHub 여기 https://github.com/GistLabs/mechanize )


또한이 소풍 자바 웹 스크래핑 및 JSON 쿼리 - http://jaunt-api.com


TagSoup, HTMLCleaner 또는 NekoHTML과 같은 HTML 파서를 살펴보십시오.


jwht-scrapper를 살펴볼 수 있습니다 !

이것은 개발자가 웹 스크래퍼에서 기대할 수있는 모든 기능을 갖춘 완전한 스크래핑 프레임 워크입니다.

그것은 (jwht-htmltopojo) [ https://github.com/whimtrip/jwht-htmltopojo ) lib 와 함께 작동하며 여기에서 다른 여러 사람들이 언급 한 Jsoup을 사용합니다.

그들은 함께 HTML을 POJO에 직접 매핑하고 고전적인 스크래핑 문제를 단 몇 분 만에 우회하는 멋진 스크래퍼를 구축하는 데 도움이 될 것입니다!

여기에있는 사람들에게 도움이되기를 바랍니다!

면책 조항, 나는 그것을 개발 한 사람입니다. 귀하의 의견을 알려주십시오!


웹 스크레이퍼를 사용하면 웹 페이지에서 유용한 콘텐츠를 추출하고 적용 가능한 형식으로 변환 할 수 있습니다.

WebScrap ws= new WebScrap();
//set your extracted website url
ws.setUrl("http://dasnicdev.github.io/webscrap4j/");
//start scrap session
ws.startWebScrap();

이제 웹 스크랩 세션이 시작되고 webscrap4j 라이브러리를 사용하여 Java에서 데이터를 스크랩하거나 추출 할 준비가되었습니다 .

제목 :

System.out.println("-------------------Title-----------------------------");
System.out.println(ws.getSingleHTMLTagData("title"));

태그 라인 :

System.out.println("-------------------Tagline-----------------------------");
System.out.println(ws.getSingleHTMLScriptData("<h2 id='project_tagline'>", "</h2>"));

모든 앵커 태그의 경우 :

System.out.println("-------------------All anchor tag-----------------------------");
   al=ws.getImageTagData("a", "href");
   for(String adata: al)
   {
    System.out.println(adata);
   }

이미지 데이터의 경우 :

System.out.println("-------------------Image data-----------------------------");
   System.out.println(ws.getImageTagData("img", "src"));
   System.out.println(ws.getImageTagData("img", "alt"));

Ul-Li 데이터 :

System.out.println("-------------------Ul-Li Data-----------------------------");
   al=ws.getSingleHTMLScriptData("<ul>", "</ul>","<li>","</li>");
   for(String str:al)
   {
    System.out.println(str);
   }

전체 소스 코드는이 튜토리얼을 확인하십시오 .


많은 양의 페이지 또는 데이터 스크랩을 자동화하려면 Gotz ETL을 사용해보십시오 .

실제 ETL 도구처럼 완전히 모델 구동됩니다. 데이터 구조, 작업 워크 플로 및 스크랩 할 페이지는 일련의 XML 정의 파일로 정의되며 코딩이 필요하지 않습니다. 쿼리는 JSoup과 함께 선택기를 사용하거나 HtmlUnit과 함께 XPath를 사용하여 작성할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/3202305/web-scraping-with-java

반응형