2017-11-22 11 views
0

JSOUP을 사용하여 웹 크롤러를 작성하려고합니다. 문제는 다른 페이지에서 작동하지만 Swiggy 데이터를 크롤링 할 수 없다는 것입니다. 나는 이것이 사용자 정의 태그 restaurant-menu의 존재 때문이라고 생각합니다. 나는이 수행JSOUP를 사용하는 웹 크롤러가 사용자 정의 태그를 가져올 수 없습니다.

Document document = Jsoup.connect(url).get(); 
Elements document_body = document.select(".layout-wrapper"); 
System.out.println(document_body.html()); 

그리고 출력에, 내가 할을이 :

<div class="restaurant-menu-container"> <restaurant-menu></restaurant-menu> </div>

당신이 웹 사이트를 방문하고 그 내용을 검사하는 경우 동안 restaurant-menu 태그가 비어의 태그에 전체 데이터가 있습니다.

맞춤 태그가 원인입니까, 아니면 다른 이유가 있습니까? restaurant-menu의 내용을 읽기

답변

0

간단하다

document.select("div.restaurant-menu-container.restaurant-menu") 

하지만 ... 당신이 JSoup를 사용할 때 찾을 수 있습니다 (당신은 페이지 소스보기로 이동하는 경우처럼)에 내용이 없음 . 이는 JSoup이 정적 HTML 컨텐츠를 구문 분석하고 div.restaurant-menu-container.restaurant-menu의 컨텐츠가 동적으로 작성되기 때문입니다.

JSoup는 동적 콘텐츠를 구문 분석 할 수 없습니다. 프로그래밍 방식으로 동적 콘텐츠를 추출하려는 경우 Selenium과 같은 것을 봐야 할 것입니다.

0

StormCrawler + Selenium으로 크롤링하는 방법을 설명하는 tutorial입니다. SC는 HTML 문서를 구문 분석하기 위해 보닛에서 Jsoup를 사용하고 XPath를 기반으로 추출 규칙을 작성할 수 있지만 NavigationFilters를 통해 페이지와 동적으로 상호 작용할 수도 있습니다.