Java爬虫第二篇:模拟登录CSDN
概述
本章讲解模拟登录CSDN。
由于CSDN登录页面加入扫码登录,不能直接获取到账号登录页面,因此需要在页面执行动作,切换到账号登录操作。
1. selenium maven配置
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.13.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server</artifactId> <version>3.13.0</version> </dependency>
2. chromedriver 本地路径配置
public class SeleniumUtil { public final static String CHROMEDRIVERPATH = "D://soft//chromedriver.exe"; public static void sleep(int m) { try { Thread.sleep(m); } catch (InterruptedException e) { e.printStackTrace(); } } }
3. 测试
public class Test{ public static void main(String[] args) { String username = "xxxx@163.com"; String password = "***********"; String url = "https://passport.csdn.net/login"; System.setProperty("webdriver.chrome.driver", SeleniumUtil.CHROMEDRIVERPATH );// chromedriver localPath ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments("–no-sandbox"); //--start-maximized WebDriver driver = new ChromeDriver(chromeOptions); driver.get(url); SeleniumUtil.sleep(1000); WebElement mainSelectE = driver.findElement(By.cssSelector(".main-select")); List<WebElement> loginType = mainSelectE.findElements(By.tagName("a")); bgm:for (int i = 0; i < loginType.size(); i++) { WebElement aelement = loginType.get(i); if( aelement.getText().indexOf("帐号登录") != -1){ aelement.click(); System.out.println("切换到帐号登录...."); break bgm; } } System.out.println("继续操作...."); SeleniumUtil.sleep(1000); WebElement formE = driver.findElement(By.cssSelector("form")); WebElement nameE = formE.findElement(By.id("all")); WebElement passwordE = formE.findElement(By.id("password")); nameE.sendKeys(username); formE.findElement(By.id("password-number")).sendKeys(password); formE.findElement(By.cssSelector("button")).click(); System.out.println(driver.manage().getCookies()); } }