2017-11-14 8 views
0

link에서 표 내용을 스크랩하려고합니다.HtmlUnit에서 자바 스크립트가 올바르게로드되지 않습니다.

"통계"탭의 "경기 통계"테이블입니다.

<tbody class="matchCentreStatsContainer"></tbody> 

그래서 있으리라 믿고있어 컨텐츠는 자바 스크립트에 의해 처리됩니다

그러나,에 의해, 내용이 실제로 컨테이너에서 누락 된 크롬을 사용하여 소스를 검사합니다.

다음 코드를 사용하여 페이지를로드하고 "통계"탭을 클릭 한 다음 페이지 내용을 확인하십시오.

WebClient wc = new WebClient(BrowserVersion.CHROME); 
    WebRequest request = new WebRequest(new URL("https://www.premierleague.com/match/14252")); 
    wc.getOptions().setThrowExceptionOnScriptError(false); 
    wc.setJavaScriptTimeout(10000); 
    wc.getOptions().setJavaScriptEnabled(true); 

    HtmlPage page = wc.getPage(request); 
    wc.waitForBackgroundJavaScript(30000); 
    HtmlUnorderedList ul = (HtmlUnorderedList) page.getByXPath("//ul[contains(@class, 'tablist')]").get(0); 

    //get the stats tab 
    HtmlListItem li = (HtmlListItem) ul.getChildNodes().get(2); 
    li.click(); 
    wc.waitForBackgroundJavaScript(10000); 
    String pageAsXml = page.asXml(); 

하지만 내 pageAsXml의 테이블에는 아무 것도 없습니다.

답변

0

코드로 간단한 테스트를 수행했습니다. wc.getOptions() 행을 비활성화하면 setThrowExceptionOnScriptError (false); js 오류가 있음을 알 수 있습니다 (브라우저가 아닌 HtmlUnit에만 해당). 일반적으로 이는 일부 자바 스크립트 코드가 실행되지 않음을 의미합니다. 이를 위해 HtmlUnit 문제를 열면이 문제를 해결할 수 있습니다. Submitting JavaScript bugs을보십시오.