import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.util.ArrayList; import java.util.List; public class DoubanStrategy implements CrawlStrategy { private static final String URL = "https://movie.douban.com/top250?start=0"; @Override public List crawl(int limit) { List list = new ArrayList<>(); try { Document doc = Jsoup.connect(URL) .userAgent("Mozilla/5.0") .timeout(10000) .get(); Elements items = doc.select(".item"); int count = 0; for (Element e : items) { if (count >= limit) break; Movie m = parseMovie(e); if (m != null) { list.add(m); count++; } } } catch (Exception ex) { System.out.println("豆瓣抓取失败(反爬保护),已跳过"); } return list; } @Override public Movie parseMovie(Element element) { try { String title = element.select(".hd .title").first().text(); double rating = Double.parseDouble(element.select(".rating_num").first().text()); return new TheatreMovie(title, 2024, rating, "电影", 49.9); } catch (Exception e) { return null; } } }