java jsoup 网络爬虫 学习例子(二) 只抓取豆瓣电影5星(力荐)电影名称
2016-04-19 16:35
846 查看
Java代码
![](http://injavawetrust.iteye.com/images/icon_star.png)
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
《太阳的后裔》 力荐
《浴血重生》 力荐
《奶酪陷阱》 力荐
《卧虎藏龙》 力荐
《太阳的后裔》 力荐
![](http://injavawetrust.iteye.com/images/icon_star.png)
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
《太阳的后裔》 力荐
《浴血重生》 力荐
《奶酪陷阱》 力荐
《卧虎藏龙》 力荐
《太阳的后裔》 力荐
相关文章推荐
- apache http server/tomcat 端口问题
- IOS 网络请求中设置cookie
- 上传STM32的USB上位机(VC++源码),动态库(VC++源码),STM32端原代码,驱动程序,全套源码(申请 http://www.amobbs.com/thread-3776746-1-1.h
- libevent高性能网络库源码分析——事件(event)及其接口(三)
- 探索 OpenStack 之(8):Neutron 深入探索之 OVS + GRE 之 完整网络流程 篇
- Http请求中Content-Type讲解以及在Spring MVC中的应用
- Linux 修改IP地址 服务器名称 和 DNS网络设置
- http://www.importnew.com/10937.html
- Caffe fine-tuning 微调网络
- httpunit测试网页是否存在 不成功的原因
- iOS应用架构谈(三):网络层设计方案(上)
- 浅谈UDP
- TCP状态转换图
- 图像处理与机器视觉网络资源收罗——倾心大放送
- 网络爬虫
- 利用SVProgressHUD进行异步网络请求
- linux tcpdump(转)
- C# HttpWebRequest类
- OKHttp源码解析
- httpd(apache)程序环境配置文件