需要下载合适的selenium webdirver jar包和对应浏览器的驱动jar包
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.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.util.List;
public class BossSpider {
public static void spider() {// 爬虫
System.out.println("------Begin--------------");
String url = "https://m.zhipin.com/weijd/v2/job/cc53ec27840e3f810nN42967FQ~~";
System.setProperty("webdriver.chrome.driver", "/Tool/chromedriver");
WebDriver driver = new ChromeDriver();
driver.get(url);
(new WebDriverWait(driver, 30)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver dr) {
int index = dr.getPageSource().indexOf("boss-message");
if (index != -1) {
return true; // 找到,退出等待
} else {
return false; // 未找到,继续等待
}
}
});
WebElement bossname = driver.findElement(By.cssSelector("div.boss-message"));
System.out.println(bossname.getText());;
List<WebElement> eleBoxs = driver.findElements(By.cssSelector("div.rec-position"));
for (WebElement eleBox : eleBoxs) {
WebElement eleTitle = eleBox.findElement(By.cssSelector("p.name"));
WebElement eleAnswer = eleBox.findElement(By.cssSelector("p.salary"));
System.out.println(eleTitle.getText() +" 薪资水平: "+eleAnswer.getText());
}
WebElement strength = driver.findElement(By.cssSelector("div.tags-position"));
System.out.println(strength.getText());;
// WebElement jobdetails = driver.findElement(By.xpath(".//*[@id='container']/div[2]/div[3]/div[2]/div[1]"));
WebElement jobdetails = driver.findElement(By.className("detail-text"));
System.out.println(jobdetails.getText());
driver.quit();
}
public static void main(String[] args) {
BossSpider.spider();
}
}
以前看到各个岗位到招聘信息一直在截图,心想着有没有简便办法将需要到信息输出来。今天有兴致,写了写代码。如上。
部分BOSS直聘中元素稍微有异,可能是职位发布者,并没有将岗位信息填写在指定的位置
遇到找不到元素到情况,自己稍稍修改哦。
以下是我到截图:【话说这家公司居然有18薪,无比羡慕 ❤】