我在项目中使用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();
}
如何创建在显示新内容时触发的侦听器,然后执行某些代码。