2016-03-01 74 views
0

網站www.kissanime.to的「瀏覽器啓用了JavaScript」保護功能,因此當您想要閱讀網站的html內容時,這個代碼將無法正常工作:從javascript保護的網站中提取HTML代碼

 HtmlUnitDriver html = new HtmlUnitDriver(); 
    String URL="https://www.kissanime.to/"; 
    html.get(URL); 
    String pageSource=html.getPageSource(); 
    System.out.println(pageSource); 

這工作,但並不是有更好的方法來做到這一點:

URL kissanime = new URL("http://www.kissanime.to/"); 
    URLConnection ks = kissanime.openConnection(); 
    BufferedReader in = new BufferedReader(newInputStreamReader(ks.getInputStream())); 
    String inputLine; 
    while ((inputLine = in.readLine()) != null) 
     System.out.println(inputLine); 
    in.close(); 

而且一段時間研究,我發現硒這是一個瀏覽器庫仿真器的後就像Jsoup和Rhino庫一樣,你將與jsoup建立初始連接然後你將添加犀牛,使它看起來像你有JavaScript或更好,但只有Jsoup和添加一些cookie來繞過保護。

+0

我不會稱之爲「保護」。他們只是給你一個警告,說他們的網站將無法正常工作,除非你啓用了Javascript –

+0

這不是一種保護,這是一種警告,無論如何,我曾經這樣做過。 –

回答

0

硒對於這樣一個簡單的用例來說是一個相當重量級的解決方案。如果你需要一個基本引擎模擬一個啓用了JavaScript的真實瀏覽器,那麼HtmlUnit(http://htmlunit.sourceforge.net/)就是你正在尋找的。

下面是一個代碼片段,該片段來自google.com刮數據:我像你那樣做,但

WebClient webClient = new WebClient(); 
HtmlPage googlePage = webClient.getPage("http://www.google.com/"); 
//posibly wait for the javascript to execute 
String source = googlePage.asXml() 
+0

不錯,我會試試,謝謝 –

0

不僅如此頁面,無論如何,你可以得到的HTML這種方式,通過它的URL,還模仿瀏覽器

private String conexion(String link) { 
     String content = null; 
     URLConnection connection = null; 
     try { 
      connection = new URL(link).openConnection(); 
      connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); 
      Scanner scanner = new Scanner(connection.getInputStream()); 
      scanner.useDelimiter("\\Z"); 
      content = scanner.next(); 
     } catch (IOException ex) { 
      JOptionPane.showMessageDialog(null, "¡¡Ese capitulo no Existe!!", "Error", JOptionPane.ERROR_MESSAGE); 
     } 
     return content; 
    }