WebScraper与java

时间:2016-12-15 17:23:14

标签: javascript java jquery selenium phantomjs

我在项目中使用java是因为它是我在大学里教的东西。 我希望你们能帮助我。经过大量搜索和使用某些工具后,我想知道什么是最好的工具。下面列出的是我搜索过的有关以下内容的更多信息: 使用PhantomJS的WebDriver(寻找帮助我的人) Jsoup(不能读JavaScript) Nutch(我还没用过它)

Jsoup不再是另类选择。我从大多数页面获取信息,但有些是由JS加载ajax请求,因此我使用PhantomJS转移到WebDriver。主要问题是我真的不知道如何正确使用它。当我单击NEXT按钮时,我必须等待JS加载新页面。

主要代码用于测试:

public static void main(String[]args)
{
    ArrayList<String> nmNavio = new ArrayList<String>();
    ArrayList<String> prevChegada = new ArrayList<String>();
    WebDriver driver = new PhantomJSDriver();

    driver.get("http://www.embraportonline.com.br/Navios/Escala");
    do{
        int tabSize = 0;


        WebElement element = driver.findElement(By.cssSelector("#wrapper > div > div.wrapper.wrapper-content > div:nth-child(2) > div > div > div.ibox-content > div.table-responsive > table > tbody.text-center"));
        List<WebElement> elements = element.findElements(By.tagName("tr")); 
        tabSize = elements.size();

        for(int a = 1; a<tabSize+1;a++)
        {
            nmNavio.add(driver.findElement(By.cssSelector("#wrapper > div > div.wrapper.wrapper-content > div:nth-child(2) > div > div > div.ibox-content > div.table-responsive > table > tbody.text-center > tr:nth-child("+a+") > td:nth-child(1) > text")).getText());
            prevChegada.add(driver.findElement(By.cssSelector("#wrapper > div > div.wrapper.wrapper-content > div:nth-child(2) > div > div > div.ibox-content > div.table-responsive > table > tbody.text-center > tr:nth-child("+a+") > td:nth-child(8) > text")).getText());
        }
        driver.findElement(By.cssSelector("#ornext")).click();

    }while(driver.findElement(By.cssSelector("#ornext")).isDisplayed());
    for(int a = 0; a<nmNavio.size();a++)
    {
        System.out.println(nmNavio.get(a));
        System.out.println(prevChegada.get(a));
    }
    driver.quit();
}

如何创建在显示新内容时触发的侦听器,然后执行某些代码。

0 个答案:

没有答案