Jsoup Java解析器:无法从网站获取所有内容HTML

时间:2014-08-10 08:39:34

标签: java html jsoup

我尝试在网站https://launch.stellar.org/#/login中获取所有标签HTML。

但我的结果没有任何输入标签,就像我在Firefox中的F12工具中看到这个网站一样。

我不明白为什么以及这个问题的解决方案是什么?

这是我的代码:

import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.CookieHandler; import java.net.CookieManager; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import javax.net.ssl.HttpsURLConnection; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.helper.HttpConnection.Response; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class HttpUrlConnect { private HttpsURLConnection conn; private final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36"; public static void main(String[] args) throws Exception { String url = "https://launch.stellar.org/#/login"; HttpUrlConnect http = new HttpUrlConnect(); // 1. Send a "GET" request, so that you can extract the form's data. String page = http.GetPageContent(url); Document doc = Jsoup.parse(page); System.out.println(doc); } String GetPageContent(String url) throws Exception { URL obj = new URL(url); conn = (HttpsURLConnection) obj.openConnection(); // default is GET conn.setRequestMethod("GET"); conn.setUseCaches(false); // act like a browser conn.setRequestProperty("Host", "wallet.stellar.org"); conn.setRequestProperty("User-Agent", USER_AGENT); conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); conn.setRequestProperty("Accept-Language", "vi-VN,vi;q=0.8,fr-FR;q=0.6,fr;q=0.4,en- US;q=0.2,en;q=0.2"); int responseCode = conn.getResponseCode(); System.out.println("\nSending 'GET' request to URL : " + url); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); return response.toString(); }

我在这里下载了jsoup库:http://jsoup.org/download

2 个答案:

答案 0 :(得分:1)

  

但是我的结果没有任何输入标签,比如当我在firefox的F12工具中看到这个网站时

" F12工具" (Inspector / Firebug)可让您在客户端(Firefox)打开时看到javascript对页面所做的所有修改。

实际上,如果您尝试查看从服务器收到的源( CTRL U ),您会发现页面中没有input个元素

您看到的代码都是由javascript生成的,因此您需要一个工具来解释javascript代码并为您提供生成的HTML代码。


事实上,JSoup只是一个HTML解析器。为此,您需要切换到SeleniumHTMLUnit

答案 1 :(得分:0)

来自服务器端的文本与从jsoup

获得的输出相同

在网页浏览器中加载页面后,使用javascript动态创建输入标签 所以只有你无法看到输入标签。