java jsoup jsoup解析html 网络爬虫 学习例子(一) 抓取兜电影名称+推荐星级

                        java jsoup jsoup解析html 网络爬虫 学习例子(一) 抓取豆电影名称+推荐星级

package com.iteye.injavawetrust.jsoup;

/**
 * 
 * @author InJavaWeTrust
 *
 */
public class DouBanReview {

	public static void main(String[] args) {
		JsoupUtil ju = JsoupUtil.getInstance();
		ju.getDoubanReview();
	}

}


package com.iteye.injavawetrust.jsoup;

/**
 * 
 * @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.jsoup;

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\\review.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();
				}
			}
		}
	}
	
	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");
						System.out.println(name + " " + star);
						JsoupUtil.getInstance().writeFile(name, star); //写入文件
					}
				}
			}
			

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}

运行结果:

豆瓣最受欢迎的影评
《太阳的后裔》 力荐
《太阳的后裔》 推荐
《少帅》 还行
《银翼杀手》 力荐
《太阳的后裔》 推荐
《因为爱情有幸福》 力荐
《维京传奇 第三季》 力荐
《卡罗尔》 力荐
《太阳的后裔》 力荐
《因为爱情有幸福》 推荐
豆瓣最受欢迎的影评
《太阳的后裔》 力荐
《火影忍者剧场版:博人传》 力荐
《夜班经理》 推荐
《卧虎藏龙:青冥宝剑》 很差
《一一》 推荐
《后宫·甄嬛传》 力荐
《太阳的后裔》 推荐
《美人鱼》 还行
《奶酪陷阱》 推荐
《太阳的后裔》 力荐
豆瓣最受欢迎的影评
《太阳的后裔》 力荐
《重庆森林》 力荐
《请和这个没用的我谈恋爱》 较差
《高跟鞋先生》 较差
《老炮儿》 还行
《浴血重生》 力荐
《夜班经理》 力荐
《特朗勃》 推荐
《没有宇宙我们无法生存》 力荐
《女巫》 力荐
豆瓣最受欢迎的影评
《房间》 推荐
《邮差》 力荐
《西游记之孙悟空三打白骨精》 推荐
《特鲁曼》 力荐
《上瘾》 力荐
《喜剧之王》 力荐
《大城小贼》 推荐
《女医明妃传》 还行
《霹雳囧花》 还行
《詹姆斯·伯罗斯特辑》 力荐
豆瓣最受欢迎的影评
《太阳的后裔》 力荐
《因为爱情有幸福》 推荐
《澳门风云3》 还行
《托马斯和朋友们:多多岛之迷失宝藏》 还行
《浴血重生》 力荐
《示铃录》 还行
《奶酪陷阱》 力荐
《请和这个没用的我谈恋爱》 推荐
《卧虎藏龙》 力荐
《恶棍天使》 还行

文件截图

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值