Tive um certo problema em fazer um Crawler que processa Javascript em Java. Depois de muito procurar e testar algumas ferramentas, encontrei uma bem legal, o Selenium (
http://seleniumhq.org). A seguir, um breve tutorial:
Aí no netbeans coloquei como biblioteca cada um dos .jar que tinha lá, os dois principais e todos aqueles da pasta lib.
Um exemplo de código fonte de navegação no site CompraFacil.com.br:
package teste;
import com.thoughtworks.selenium.*;
import org.openqa.selenium.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
WebDriver driver = new HtmlUnitDriver(true);//true para javascript
Selenium selenium = new WebDriverBackedSelenium(driver, "http://www.comprafacil.com.br/");
selenium.open("/");
System.out.println("URL="+driver.getCurrentUrl());
System.out.println("TITLE="+driver.getTitle());
selenium.click("link=Brinquedos");
selenium.waitForPageToLoad("30000");
System.out.println("URL="+driver.getCurrentUrl());
System.out.println("TITLE="+driver.getTitle());
selenium.click("link=Bonecos");
selenium.waitForPageToLoad("30000");
System.out.println("URL="+driver.getCurrentUrl());
System.out.println("TITLE="+driver.getTitle());
selenium.click("link=regexp:^2$");
selenium.waitForPageToLoad("30000");
System.out.println("URL="+driver.getCurrentUrl());
System.out.println("TITLE="+driver.getTitle());
System.out.println("SRC="+driver.getPageSource());
selenium.stop();