【问题标题】:Reading Rendered data from a website从网站读取渲染数据
【发布时间】:2018-06-04 08:21:53
【问题描述】:

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

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

我使用的是来自 JAVA jdk 1.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
        }

【问题讨论】:

    标签: java url data-extraction


    【解决方案1】:

    原因是你看到的元素是javascript创建的,你不能直接得到这些元素。

    为了获取元素数据,你需要在javascript完成创建元素后解析它。

    为您提供两种解决方案:

    1. phantomjs
    2. selenium

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 2011-06-13
      • 2018-07-15
      相关资源
      最近更新 更多