- package com.iteye.injavawetrust.review;
- /**
- *
- * @author InJavausWeTrust
- *
- */
- public enum Star {
- one("很差"), two("较差"), three("还行"), four("推荐"), five("力荐");
- private String star;
- private Star(String star) {
- this.star = star;
- }
- public String getStar() {
- return star;
- }
- }
- package com.iteye.injavawetrust.review;
- /**
- *
- * @author InJavaWeTrust
- *
- */
- public class DouBanReview {
- public static void main(String[] args) {
- JsoupUtil ju = JsoupUtil.getInstance();
- ju.getDoubanReview();
- }
- }
- package com.iteye.injavawetrust.review;
- /**
- *
- * @author InJavaWeTrust
- *
- */
- public class Constants {
- /**
- * 豆瓣最受欢迎的影评URL
- */
- public static final String URL = "http://movie.douban.com/review/best/";
- /**
- * 每页显示记录条数
- */
- public static final int NUM = 10;
- /**
- * 拼接分页
- */
- public static final String START = "?start=";
- }
- package com.iteye.injavawetrust.review;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.Writer;
- import java.util.Iterator;
- import org.jsoup.Connection;
- import org.jsoup.Jsoup;
- import org.jsoup.nodes.Document;
- import org.jsoup.nodes.Element;
- import org.jsoup.select.Elements;
- /**
- *
- * @author InJavaWeTrust
- *
- */
- public class JsoupUtil {
- private JsoupUtil() {
- }
- private static final JsoupUtil instance = new JsoupUtil();
- public static JsoupUtil getInstance() {
- return instance;
- }
- /**
- * 将电影名称和评论写入文件
- * @param name 电影名称
- * @param star 评论
- */
- public void writeFile(String name, String star){
- File file = new File("E:\\douban\\fiveStarReview.txt");
- Writer writer = null;
- try {
- writer = new FileWriter(file, true);
- writer.write(star + " " + name + "\r\n");
- writer.flush();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if(null != writer){
- try {
- writer.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- /**
- * 只抓取5星(力荐)电影名称
- */
- public void getDoubanReview(){
- try {
- //只得到1-5页数据
- for(int i = 0; i < 5; i++){
- String url = Constants.URL + Constants.START + String.valueOf(i * Constants.NUM);
- System.out.println(url);
- Connection connection = Jsoup.connect(url);
- Document document = connection.get();
- Elements ul = document.select("ul"); // 得到ul标签
- Iterator<Element> ulIter = ul.iterator();
- while (ulIter.hasNext()) {
- Element element = ulIter.next();
- Elements eleLi = element.select("li.clst*"); // 得到ul里的li.clst*标签
- Iterator<Element> liIter = eleLi.iterator();
- while (liIter.hasNext()) {
- Element liElement = liIter.next();
- Elements eleSpan = liElement.select("span.pl*"); // 得到ul里的li.clst*里span.pl*的标签
- Elements eleHref = eleSpan.select("a[href]");
- String name = eleHref.text().substring(eleHref.text().indexOf("《"));
- Elements eleStar = eleSpan.select("span[title]");
- String star = eleStar.attr("title");
- //抓取5星(力荐)电影名称
- if(Star.five.getStar().equals(star)) {
- System.out.println(name + " " + star);
- JsoupUtil.getInstance().writeFile(name, star); //写入文件
- }
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
运行结果:
http://movie.douban.com/review/best/?start=0
《太阳的后裔》 力荐
《银翼杀手》 力荐
《维京传奇 第三季》 力荐
《因为爱情有幸福》 力荐
《卡罗尔》 力荐
《火影忍者剧场版:博人传》 力荐
http://movie.douban.com/review/best/?start=10
《太阳的后裔》 力荐
《后宫·甄嬛传》 力荐
《怪物之子》 力荐
《太阳的后裔》 力荐
http://movie.douban.com/review/best/?start=20
《太阳的后裔》 力荐
《重庆森林》 力荐
《浴血重生》 力荐
《夜班经理》 力荐
《没有宇宙我们无法生存》 力荐
《女巫》 力荐
http://movie.douban.com/review/best/?start=30
《邮差》 力荐
《特鲁曼》 力荐
《上瘾》 力荐
《喜剧之王》 力荐
《詹姆斯·伯罗斯特辑》 力荐
http://movie.douban.com/review/best/?start=40
《太阳的后裔》 力荐
《浴血重生》 力荐
《奶酪陷阱》 力荐
《卧虎藏龙》 力荐
《太阳的后裔》 力荐