pom.xml
<project xmlns="<http://maven.apache.org/POM/4.0.0>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://maven.apache.org/POM/4.0.0> <http://maven.apache.org/xsd/maven-4.0.0.xsd>">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.com.do1</groupId>
<artifactId>51jobCrawler</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.7.3</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.3</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-selenium</artifactId>
<version>0.7.3</version>
</dependency>
</dependencies>
</project>
LoginSpiderDemo.java
public class LoginSpiderDemo implements PageProcessor {
private Site site = Site.me().setRetryTimes(3).setTimeOut(2000);
private WebDriver driver;
private final String DRIVER_PATH = "C:\\Al-assad\\bin_dev\\WebDriver\\chromedriver.exe";
private Set<Cookie> cookies; //cookie
//登陆操作
public void login(String loginURL){
System.setProperty("webdriver.chrome.driver",DRIVER_PATH);
driver = new ChromeDriver();
WebDriver.Navigation navigation = driver.navigate();
navigation.to(loginURL);
//执行登陆操作
WebElement loginNameEle = driver.findElement(By.id("loginname"));
WebElement passwordEle = driver.findElement(By.id("password"));
WebElement loginBtnEle = driver.findElement(By.id("login_btn"));
loginNameEle.clear();
passwordEle.clear();
loginNameEle.sendKeys("18819454576");
passwordEle.sendKeys("51job1995assad");
loginBtnEle.click();
//获取并保存cookies
cookies = driver.manage().getCookies();
}
//注入cookie
@Override
public Site getSite() {
for(Cookie cookie : cookies){
site.addCookie(cookie.getName(), cookie.getValue());
}
//伪造Header
site.addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36");
return site;
}
@Override
public void process(Page page) {
page.putField("message", page.getHtml().xpath("/html/body/div[3]/div[3]/div[1]/div[1]/div[2]/div/div[1]/div[3]/span/text()").toString());
driver.quit(); //退出浏览器
}
public static void main(String[] args) {
LoginSpiderDemo demo = new LoginSpiderDemo();
demo.login("<https://login.51job.com/login.php>");
Spider.create(demo)
.addUrl("<https://i.51job.com/userset/my_51job.php>")
.addPipeline(new ConsolePipeline())
.setExitWhenComplete(true)
.run();
}
}