2016-03-01 72 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; 
    }