【问题标题】:Get Amazon data prices table with Jsoup使用 Jsoup 获取亚马逊数据价格表
【发布时间】:2015-04-20 14:45:06
【问题描述】:

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

【问题讨论】:

  • 为您的连接添加一个 userAgent 和一个超时。确保您正确获取源代码。然后在此站点上尝试您的 css 查询 - try.jsoup.org。当我在 url 上尝试thead 时,我什么也没得到。

标签: java jsoup amazon


【解决方案1】:

无法得到想要的内容的原因是:有些内容是Ajax加载的,Jsoup无法察觉。

请参考Fetch contents(loaded through AJAX call) of a web page,它表明HtmlUnit等,会为你做的。

【讨论】:

    【解决方案2】:

    Jsoup

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

    PhantomJSDriver

    如果问题是由 Javascript 引起的(因为 JSoup 不支持 Javascript),那么我建议 Selenium + PhantomJSDriver (Ghostdriver),它用于 GUI-less 浏览器自动化。有了这个,您可以轻松地浏览页面、选择元素、提交表单并执行一些抓取。 还支持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);   
    

    【讨论】:

      猜你喜欢
      • 2015-07-22
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      相关资源
      最近更新 更多