java jsoup 网络爬虫 学习例子(二) 只抓取豆瓣电影5星(力荐)电影名称_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java jsoup 网络爬虫 学习例子(二) 只抓取豆瓣电影5星(力荐)电影名称

java jsoup 网络爬虫 学习例子(二) 只抓取豆瓣电影5星(力荐)电影名称

 2016/5/12 5:33:50  InJavaWeTrust  程序员俱乐部  我要评论(0)
  • 摘要:packagecom.iteye.injavawetrust.review;/****@authorInJavausWeTrust**/publicenumStar{one("很差"),two("较差"),three("还行"),four("推荐"),five("力荐");privateStringstar;privateStar(Stringstar){this.star=star;}publicStringgetStar(){returnstar;}}packagecom.iteye
  • 标签:学习 例子 Java 网络 网络爬虫 JS
class="java" name="code">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
《太阳的后裔》 力荐
《浴血重生》 力荐
《奶酪陷阱》 力荐
《卧虎藏龙》 力荐
《太阳的后裔》 力荐

?

文件截图:

?

?

  • 大小: 36.2 KB
  • 查看图片附件
发表评论
用户名: 匿名