Selenium爬虫小案例
作者:互联网
实现模拟人为操作自动化根据:工作经验、学历要求、公司规模、行业领域抓取拉勾网薪资范围;
1、下载 chromedriver
;
下载地址 : https://npm.taobao.org/mirrors/chromedriver/89.0.4389.23/
2、创建一个Maven
项目;
然后向pom.xml
导入selenium
依赖:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.141.59</version>
</dependency>
然后将我们之前下载的 chromedriver
丢到项目的resources
目录下;
创建一个类LagouSpider
:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @ClassName: LagouSpider
* @Author: lenovo
* @Date: 2021/3/22 21:43
* Version: 1.0
*/
public class LagouSpider {
public static void main(String[] args) {
// 1、设置webdriver的路径
System.setProperty("webdriver.chrome.driver",LagouSpider.class.getClassLoader().getResource("chromedriver.exe").getPath());
// 2、创建 webdriver
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://www.lagou.com/zhaopin/Java/?labelWords=label");
}
}
当我们启动类的时候,他会自动使用浏览器访问拉钩的官网;
3、选择索引条件;
xpath文档:https://www.w3cschool.cn/xpath/xpath-syntax.html
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @ClassName: LagouSpider
* @Author: lenovo
* @Date: 2021/3/22 21:43
* Version: 1.0
*/
public class LagouSpider {
public static void main(String[] args) {
// 1、设置 webdriver 的路径
System.setProperty("webdriver.chrome.driver", LagouSpider.class.getClassLoader().getResource("chromedriver.exe").getPath());
// 2、创建 webdriver
WebDriver webDriver = new ChromeDriver();
// 3、跳转页面
webDriver.get("https://www.lagou.com/zhaopin/Java/?labelWords=label");
webDriver.manage().window().maximize(); // 将浏览器最大化
// 4、通过 xpath 选中元素
clickOption(webDriver, "工作经验", "在校/应届");
clickOption(webDriver, "学历要求", "本科");
clickOption(webDriver, "融资阶段", "天使轮");
clickOption(webDriver, "公司规模", "15-50人");
clickOption(webDriver, "行业领域", "移动互联网");
}
/**
* clickOption:单击选项
* @param webDriver
* @param choseTitle
* @param optionTitle
*/
private static void clickOption(WebDriver webDriver, String choseTitle, String optionTitle) {
WebElement chosenElement = webDriver.findElement(By.xpath("//li[@class='multi-chosen']//span[contains(text(),'" + choseTitle + "')]"));
WebElement optionElement = chosenElement.findElement(By.xpath("../a[contains(text(),'" + optionTitle + "')]"));
optionElement.click();
}
}
4、分析解析元素;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.List;
/**
* @ClassName: LagouSpider
* @Author: lenovo
* @Date: 2021/3/22 21:43
* Version: 1.0
*/
public class LagouSpider {
public static void main(String[] args) throws InterruptedException {
// 1、设置 webdriver 的路径
System.setProperty("webdriver.chrome.driver", LagouSpider.class.getClassLoader().getResource("chromedriver.exe").getPath());
// 2、创建 webdriver
WebDriver webDriver = new ChromeDriver();
// 3、跳转页面
webDriver.get("https://www.lagou.com/zhaopin/Java/?labelWords=label");
webDriver.manage().window().maximize(); // 将浏览器最大化
// 4、通过 xpath 选中元素
clickOption(webDriver, "工作经验", "在校/应届");
clickOption(webDriver, "行业领域", "移动互联网");
// 5、解析页面元素
List<WebElement> jobElements = webDriver.findElements(By.className("con_list_item"));
for (WebElement jobElement : jobElements) {
WebElement moneyElement = jobElement.findElement(By.className("position")).findElement(By.className("money"));
System.out.print(moneyElement.getText() + "\t");
String company_name = jobElement.findElement(By.className("company")).findElement(By.className("company_name")).getText();
System.out.print(company_name +"\n");
}
}
/**
* clickOption:单击选项
* @param webDriver
* @param choseTitle
* @param optionTitle
*/
private static void clickOption(WebDriver webDriver, String choseTitle, String optionTitle) {
WebElement chosenElement = webDriver.findElement(By.xpath("//li[@class='multi-chosen']//span[contains(text(),'" + choseTitle + "')]"));
WebElement optionElement = chosenElement.findElement(By.xpath("../a[contains(text(),'" + optionTitle + "')]"));
optionElement.click();
}
}
分页获取数据:
可以跳转到下一页!
最后一页的下一页
是灰色的;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.List;
/**
* @ClassName: LagouSpider
* @Author: lenovo
* @Date: 2021/3/22 21:43
* Version: 1.0
*/
public class LagouSpider {
public static void main(String[] args) throws InterruptedException {
// 1、设置 webdriver 的路径
System.setProperty("webdriver.chrome.driver", LagouSpider.class.getClassLoader().getResource("chromedriver.exe").getPath());
// 2、创建 webdriver
WebDriver webDriver = new ChromeDriver();
// 3、跳转页面
webDriver.get("https://www.lagou.com/zhaopin/Java/?labelWords=label");
webDriver.manage().window().maximize(); // 将浏览器最大化
// 4、通过 xpath 选中元素
clickOption(webDriver, "工作经验", "在校/应届");
clickOption(webDriver, "行业领域", "移动互联网");
// 5、解析页面元素
extractJobsByPagination(webDriver);
}
/**
* 分页获取页面元素
* ctrl alt m --- 将代码块抽取成方法
*
* @param webDriver
*/
private static void extractJobsByPagination(WebDriver webDriver) {
List<WebElement> jobElements = webDriver.findElements(By.className("con_list_item"));
for (WebElement jobElement : jobElements) {
WebElement moneyElement = jobElement.findElement(By.className("position")).findElement(By.className("money"));
String company_name = jobElement.findElement(By.className("company")).findElement(By.className("company_name")).getText();
System.out.println(company_name + " : " + moneyElement.getText());
}
WebElement nextPageBtn = webDriver.findElement(By.className("pager_next"));
if (!nextPageBtn.getAttribute("class").contains("pager_next_disabled")) {
nextPageBtn.click();
System.out.println("解析下一页");
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
extractJobsByPagination(webDriver);
}
}
/**
* clickOption:单击选项
*
* @param webDriver
* @param choseTitle
* @param optionTitle
*/
private static void clickOption(WebDriver webDriver, String choseTitle, String optionTitle) {
WebElement chosenElement = webDriver.findElement(By.xpath("//li[@class='multi-chosen']//span[contains(text(),'" + choseTitle + "')]"));
WebElement optionElement = chosenElement.findElement(By.xpath("../a[contains(text(),'" + optionTitle + "')]"));
optionElement.click();
}
}
项目演示:http://mtw.so/5X056Q
标签:webDriver,Selenium,selenium,爬虫,clickOption,案例,findElement,org,import 来源: https://blog.csdn.net/qq_46921028/article/details/115099586