我想从此数据表中获取数据 提到的网址。
这不适用于该网址,仅适用于其他网址。
这是用于网页抓取的代码,但问题在于该网址无法正常工作。
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();
}
}
}
我希望此数据表中所有可用数据的输出 网址,此程序可以与其他网址正常工作。
答案 0 :(得分:0)
问题是该URL在页面加载后(通过javascript)加载了其元素。如果您可能要等2秒钟后再进行抓取,则应该加载页面
编辑:您将需要使用beautifulSoup之外的其他东西,因为bs jsut会在页面加载时读取所有内容。您可以使用硒来制作一个真正的浏览器来读取数据