繁体   English   中英

使用Jsoup获取Amazon数据价格表

[英]Get Amazon data prices table with Jsoup

我正在尝试使用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();
}

无法获得所需内容的原因是: Ajax加载了某些内容, Jsoup无法Jsoup这些Jsoup

请参阅获取网页的内容(通过AJAX调用加载) ,它表明HtmlUnit等将为您完成。

Jsoup

  • 将userAgent和超时添加到您的连接。
  • 确保正确获取源代码。
  • http://try.jsoup.org/上尝试CSS选择器查询。

PhantomJSDriver

如果问题是由Javascript引起的(因为JSoup不支持Javascript),那么我建议使用Selenium + PhantomJSDriver(Ghostdriver),它用于无GUI的浏览器自动化。 使用此工具,您可以轻松浏览页面,选择元素,提交表单并执行一些抓取操作。 还支持Javascript。

您可以在此处浏览Selenium文档。 您将必须下载phantomjs.exe文件。

这里提供了一个很好的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);   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM