该程序不只适用于该网址...适用于其他网址

时间:2019-06-06 08:35:36

标签: java python web-scraping datatable

我想从此数据表中获取数据 提到的网址。

这不适用于该网址,仅适用于其他网址。

这是用于网页抓取的代码,但问题在于该网址无法正常工作。

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class GetData {
   public static void main(String[] args) throws InterruptedException {

      String html = "http://programs.dsireusa.org/system/program";
      try {
         Document doc = Jsoup.connect(html).get();
         Elements tableElements = doc.select("table");

         Elements tableHeaderEles = tableElements.select("thead tr th");
         System.out.println("headers");
         Thread.sleep(5000);
         System.out.println(tableHeaderEles.size());

         for (int i = 0; i < tableHeaderEles.size(); i++) {
            System.out.println(tableHeaderEles.get(i).text());
         }
         System.out.println();

         Elements tableRowElements = tableElements.select(":not(thead) tr");

         for (int i = 0; i < tableRowElements.size(); i++) {
            Element row = tableRowElements.get(i);
            System.out.println("row");
            Elements rowItems = row.select("td");
            for (int j = 0; j < rowItems.size(); j++) {
               System.out.println(rowItems.get(j).text());
            }
            System.out.println();
         }

      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

我希望此数据表中所有可用数据的输出 网址,此程序可以与其他网址正常工作。

http://programs.dsireusa.org/system/program

1 个答案:

答案 0 :(得分:0)

问题是该URL在页面加载后(通过javascript)加载了其元素。如果您可能要等2秒钟后再进行抓取,则应该加载页面

编辑:您将需要使用beautifulSoup之外的其他东西,因为bs jsut会在页面加载时读取所有内容。您可以使用硒来制作一个真正的浏览器来读取数据