java 使用Jsoup获取Amazon数据价格表

cbeh67ev  于 2023-03-06  发布在  Java
关注(0)|答案(2)|浏览(158)

我正在尝试使用Jsoup从网站获取数据表:http://aws.amazon.com/ec2/pricing/
我需要从表中获取数据,我尝试从第一个表开始但是页面在一段时间后加载了该表。

Document doc = Jsoup.connect(html).get();
Elements tableElements = doc.select("table");
Elements tableHeaderEles = tableElements.select("thead tr th");
Elements tableRowElements = tableElements.select(":not(thead) tr");
Instance ins = new Instance();
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();
}
0pizxfdo

0pizxfdo1#

无法获得所需内容的原因是:某些内容由Ajax加载,Jsoup无法识别。
请参考Fetch contents(loaded through AJAX call) of a web page,它显示HtmlUnit等可以满足您的需求。

f2uvfpb9

f2uvfpb92#

  • 向连接添加userAgent和超时。
  • 确保您获得了正确的源代码。
  • http://try.jsoup.org/上尝试CSS选择器查询。
    幻像JSDriver

如果问题是由Javascript引起的(因为JSoup不支持Javascript),那么我建议使用Selenium + PhantomJSDriver(Ghostdriver),它用于无GUI的浏览器自动化。使用它,您可以轻松地在页面中导航、选择元素、提交表单,还可以执行一些抓取操作。Javascript也受支持。
您可以通过Selenium文档here获得。您将必须下载phantomjs.exe文件。
here中提供了一个很好的PhantomJSDriver教程
PhantomJSDriver的配置(来自教程):

DesiredCapabilities caps = new DesiredCapabilities();
caps.setJavascriptEnabled(true); // not really needed: JS enabled by default
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C://phantomjs.exe");
caps.setCapability("takesScreenshot", true);
WebDriver driver = new PhantomJSDriver(caps);

相关问题