前言:
此时兄弟们对“java如何爬取网页数据”大概比较着重,看官们都需要知道一些“java如何爬取网页数据”的相关知识。那么小编也在网摘上汇集了一些有关“java如何爬取网页数据””的相关内容,希望小伙伴们能喜欢,大家一起来了解一下吧!一、前言
Selenium 初衷是做一个自动化测试工具,但是应用在爬虫领域,效果还是相当不错的!
二、安装
selenium驱动下载()版本,注意和本地 Chrome 版本一致,如:
下载完成后,将 selenium 驱动放到 chrome.exe 同级目录下:
三、代码
1.依赖
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.0</version></dependency>
2.测试
获取百度云信息的案例
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.chrome.ChromeOptions;import org.openqa.selenium.support.ui.ExpectedCondition;import org.openqa.selenium.support.ui.WebDriverWait;import java.util.HashMap;import java.util.Map;public class TestSelenium { public static void main(String[] args) { // 本地的驱动地址 System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); Map<String, Object> preferences = new HashMap<String, Object>(); ChromeOptions options = new ChromeOptions(); // 不加载图片,提高速度 preferences.put("profile.managed_default_content_settings.images", 2); options.setExperimentalOption("prefs", preferences); WebDriver driver = new ChromeDriver(options); // 百度网盘地址 driver.get(";); // 限制爬取时长 WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { boolean loadcomplete = d.findElement(By.tagName("body")).isDisplayed(); return loadcomplete; } }); boolean hasPassword = false; // 是否有密码 String title = driver.getTitle(); if ("百度网盘 请输入提取码".equals(title)) { hasPassword = true; } if (hasPassword) { WebElement pInput = driver.findElement(By.cssSelector(".QKKaIE.LxgeIt")); WebElement btn = driver.findElement(By.cssSelector(".g-button-right")); // 输入密码 pInput.sendKeys("uffx"); // 点击提取 btn.click(); } System.out.println(title); // driver.close(); // 浏览器关闭 // driver.quit(); // 释放资源 }}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java如何爬取网页数据