Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从网站读取渲染数据_Java_Url_Data Extraction - Fatal编程技术网

Java 从网站读取渲染数据

Java 从网站读取渲染数据,java,url,data-extraction,Java,Url,Data Extraction,我正在尝试使用JAVA从几个网站提取数据。 我正在连接到一个有表的网站。 我需要从td元素中提取值 问题是: -在浏览器中检查元素时,可以在源中看到元素及其值。 -当我在浏览器中查看源代码时,我得到了JS 我使用的是JavaJDK1.8中的URL,当下面的代码运行时,我得到的是未渲染的JS,而不是站点在访问时显示的元素 import java.net.URL; import java.net.URLConnection; URL url = new URL("http

我正在尝试使用JAVA从几个网站提取数据。 我正在连接到一个有表的网站。 我需要从td元素中提取值

问题是: -在浏览器中检查元素时,可以在源中看到元素及其值。 -当我在浏览器中查看源代码时,我得到了JS

我使用的是JavaJDK1.8中的URL,当下面的代码运行时,我得到的是未渲染的JS,而不是站点在访问时显示的元素

    import java.net.URL;
    import java.net.URLConnection;

     URL url = new URL("https://www.example.com");
    URLConnection conn = url.openConnection();
    conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB;     rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)");
    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
      while ((f = in.readLine()) != null) {
            builder.append(f);
        }
        alltext = builder.toString();
        if  (alltext.contains("<td colspan="1">Something</td>")) {
        ...Do something
        }
import java.net.URL;
导入java.net.URLConnection;
URL=新URL(“https://www.example.com");
URLConnection conn=url.openConnection();
conn.setRequestProperty(“用户代理”、“Mozilla/5.0(Windows;U;Windows NT 6.1;en GB;rv:1.9.2.13)Gecko/20101203 Firefox/3.6.13(.NET CLR 3.5.30729)”;
BufferedReader in=新的BufferedReader(新的InputStreamReader(conn.getInputStream(),“UTF-8”);
而((f=in.readLine())!=null){
附加(f);
}
alltext=builder.toString();
if(alltext.contains(“某物”)){
…做点什么
}

原因是您看到的元素是由
javascript
创建的,您无法直接获取这些元素

为了获得元素数据,您只需要在javascript完成创建元素之后对其进行解析

为您提供两种解决方案:

  • 注意:这将需要您编写更多的代码并花费更多的时间,在这种情况下不容易选择