Préparez l'environnement Scraping avec Java. Cependant, je ne veux pas installer Chrome, alors laissez Docker (selenium / standalone-chrome
) le faire.
Merci beaucoup. https://qiita.com/wizpra-koyasu/items/7b7e0938ad6d36caf4be https://stackoverflow.com/questions/12836114/selenium-webdriver-remote-setup https://www.seleniumhq.org/docs/03_webdriver.jsp
C'est très simple. Cliquez simplement sur + NOUVEAU
dans Kitematic, recherchez standalone-chrome
et CREATE
Si vous le démarrez en toute sécurité, vous verrez sur quel port il est ouvert à ʻACCESS URL`, alors notez-le. Si vous comprenez, je pense que vous devriez spécifier les ports
Presque l'exemple de code
package org.openqa.selenium.example;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Selenium2Example {
public static void main(String[] args) {
// Create a new instance of the Firefox driver
// Notice that the remainder of the code relies on the interface,
// not the implementation.
DesiredCapabilities capability = DesiredCapabilities.chrome();
WebDriver driver = null;
try {
driver = new RemoteWebDriver(new URL("http://localhost:32778/wd/hub"),
capability);
} catch (MalformedURLException e) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
}
if(driver != null) {
// And now use this to visit Google
driver.get("http://www.google.com");
// Alternatively the same thing can be done like this
// driver.navigate().to("http://www.google.com");
// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));
// Enter something to search for
element.sendKeys("Cheese!?");
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
// Check the title of the page
System.out.println("Page title is: " + driver.getTitle());
// Google's search is rendered dynamically with JavaScript.
// Wait for the page to load, timeout after 10 seconds
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
// Should see: "cheese! - Google Search"
System.out.println("Page title is: " + driver.getTitle());
//Close the browser
driver.quit();
}
}
}
Puisque Selenium est utilisé, mettez la bibliothèque dans Maven ou Gradle. J'ai utilisé Maven
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>hoge</groupId>
<artifactId>fuga</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.41.0</version>
</dependency>
</dependencies>
</project>
Si vous le déplacez avec ceci, vous devriez obtenir la sortie suivante ... C'est facile.
Page title is: Cheese!? -recherche Google
Page title is: Cheese!? -recherche Google
Où sera-t-il stocké lorsque je l'emmènerai? J'ai créé WebDriver de Remote pour la première fois, mais je me demande si l'image générée peut être contrôlée côté client. Ou sera-t-il conservé sur le serveur et collecté? Eh bien, je suis sûr que c'est l'ancien ... Découvrons demain ...
Recommended Posts