package com.yyt.moviecrawler.strategy; import com.yyt.moviecrawler.model.Movie; import com.yyt.moviecrawler.model.DoubanMovie; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.ArrayList; import java.util.List; public class DoubanStrategy implements CrawlerStrategy { @Override public List crawl(int limit) { WebDriver driver = new ChromeDriver(); driver.get("https://movie.douban.com/top250"); List movies = new ArrayList<>(); try { Thread.sleep(3000); List elements = driver.findElements(By.cssSelector(".item")); for (int i = 0; i < Math.min(limit, elements.size()); i++) { WebElement el = elements.get(i); String title = el.findElement(By.cssSelector(".title")).getText(); double score = Double.parseDouble(el.findElement(By.cssSelector(".rating_num")).getText()); String type = el.findElement(By.cssSelector(".bd p")).getText().split("/")[1].trim(); String author = el.findElement(By.cssSelector(".bd p")).getText().split("/")[0].trim(); movies.add(new DoubanMovie(title, score, type, author)); } } catch (Exception e) { e.printStackTrace(); } finally { driver.quit(); } return movies; } }