Парсинг(Скрапинг) web-стриниц

202
25 апреля 2018, 07:53

Мне нужно пропарсить веб страницу в java, на которой необходимо сперва залогиниться ввести пароль и тд. Читал в интернете , это делают через htmlunit.WebClient , но конкретно понятного примера не нашел. Может кто имел опыт работы с чем-то подобным и подскажет ,куда двигаться , какие библиотеки необходимы или мб скинет туториал . Hope for your Support !

Answer 1

Используйте Selenium Web Driver. Вам понадобится сам селениум, один из драйверов для браузера и сам браузер (популярные решения хром либо мазила). Насчет htmlunit - у него проблема с js-скриптами и соответственно возникают проблемы с сайтами, которые содержат динамический контент. Пример вытягивания страницы с помощью селениума и хрома в фоновом процессе (без отображения окна браузера):

public static void main(String[] args) throws Exception {
    System.setProperty("webdriver.chrome.driver", "path to chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless");
    WebDriver driver = new ChromeDriver(options);
    driver.get("http://yourURL:8080/#/login);
    WebElement username = driver.findElement(By.id("userId"));
    WebElement psw = driver.findElement(By.id("userPsw"));
    username.sendKeys("myLogin");
    psw.sendKeys("myPsw");
    driver.manage().timeouts().implicityWait(5, TimeUnit.SECONDS);
    //or
    //WebDriverWait wait = new WebDriverWait(driver, 5);
    //wait.until(ExpectedConditions.persenceOfElementLocated(By.cssSelector("someCssExpected")));
    driver.findElement(By.linkText("Войти")).click();
    System.out.println("Page source: " + driver.getPageSource());
}
READ ALSO
Замена разделителя в строке

Замена разделителя в строке

Есть строка с реквизитами вида AAA,BBBB,AAAAA И есть строка с реквизитами вида AAA, BBBB, AAAAA Так же бывают AAA,BBBB, AAAAA или AAA ,BBBB, AAAAA

244
Docker & Tomcat

Docker & Tomcat

Всем привет, в java я новичок, есть приложение на Spring Boot, поставлено на контейнере DockerПри запуске Томкат занимает 8080 порт, и Докер тоже висит...

165
задача с передачей объекта в фрагмент

задача с передачей объекта в фрагмент

Помогите решить задачу, в моем способе есть неразрешимая проблема

215