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/41e876ca76f18ca51XVz0925ElI~"; 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直聘中元素稍微有异,遇到找不到元素到情况,自己稍稍修改哦。
以下是我到截图: