关于怎么获取豆瓣日志的文章 原来有写过一篇:http://fair-jm.iteye.com/blog/1896575
这个是用htmlparser的 现在的改成jsoup 原理差不多 都是根据tag 还有id来获取 日志的标题 发布时间和内容的
先来一张效果图吧 生成的还不错(生成的来源依旧是我姐的豆瓣日志:http://www.douban.com/people/maybedekky/notes) 没错这个工具图片的地址是直接转成图片的...不是text文本..略强大
所以这部分就略过了 需要的可以看上面的日志。
itextpdf的下载地址是:
http://itextpdf.com/download.php
为了格式 还需要一个iText XML Worker来直接将html的内容转成pdf(一些css的设置最好全清空了 不然格式会乱七八糟了)
这里有个中文支持的问题
看这里:http://blog.csdn.net/kings988/article/details/5393982
不过我自己试了下不用这么麻烦 只要把字体改成支持中文的字体就好了 很简单的一段(因为支持中文的字体也一定支持英文的不是吗?)
在com.itextpdf.tool.xml.css.apply下的ChunkCssApplier类中这样修改:(这两个类都是在IText Xml worker的jar下的):
好这样中文问题就解决啦(你想换什么字体就换好了)
生成的主要代码只有一行:
XMLWorkerHelper.getInstance().parseXHtml(writer, document, new StringReader("<html><body>"+arti.warpInfo()+"</body></html>"));
三个参数分别是:
com.itextpdf.tool.xml.XMLWorkerHelper com.itextpdf.text.Document java.io.Reader
当然还有其他重载的方式
example代码如下 这段代码做测试用的 生成的文件也是完好的:
package org.cc.abao.test; import java.io.FileOutputStream; import java.io.IOException; import java.io.StringReader; import java.net.MalformedURLException; import java.net.URL; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import org.cc.abao.vo.Article; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.tool.xml.XMLWorkerHelper; /** * * @author cc fair_jm(http://fair-jm.iteye.com/) * */ public class TestJsoup { public static void main(String[] args) throws MalformedURLException, IOException, DocumentException { Document doc = Jsoup.parse(new URL( "http://www.douban.com/people/maybedekky/notes"), 5000); Elements elements = doc.select("a[data-url]"); List<String> urls = new ArrayList<String>(); for (Element element : elements) { urls.add(element.attr("data-url")); } System.out.println(urls); StringBuffer snote=new StringBuffer(); Article arti=new Article(); // for(String url:urls){ Document article = Jsoup.parse(new URL(urls.get(0)), 5000); Elements notes = article.select("div#link-report"); Element note = notes.get(0); arti.setContent(note.html()); arti.setTitle(article.select("title").get(0).text()); arti.setDate(article.select("span[class=pl]").get(0).text()); // snote="<html><body>"+note.html().replaceAll("<div.*>", "") // .replaceAll("</div>", "")+"</body></html>"; // snote.append(note.html().replaceAll("<div.*>", "").replaceAll("</div>", "")); // } com.itextpdf.text.Document document=new com.itextpdf.text.Document(); String name=TestJsoup.class.getResource("/").getFile().substring(1)+"/results/loremipsum.pdf"; Files.deleteIfExists(Paths.get(name)); Files.createFile(Paths.get(name)); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(name)); writer.setViewerPreferences(PdfWriter.HideToolbar); document.open(); XMLWorkerHelper.getInstance().parseXHtml(writer, document, new StringReader("<html><body>"+arti.warpInfo()+"</body></html>")); // System.out.println(snote); document.close(); } }
代码已经是乱七八糟的了....
还有个Article的vo类:
package org.cc.abao.vo; public class Article { private String title; private String date; private String content; private String wrappedInfo; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String warpInfo(){ if(wrappedInfo==null){ wrappedInfo="<p><span style=\"font-size: xx-large;\">"+title+"</span></p><p>"+date+"</p><br /><hr /><h2>"+ content.replaceAll("<div.*>", "").replaceAll("</div>", "")+"</h2><br /><hr />"; } return wrappedInfo; } }
具体的代码就不放了 说下流程:
- 从日志的首页获取全部的日志页(从全部的http://www.douban.com/people/maybedekky/notes?start=XX中得到 形式 1到13页的话 也就是 start=0 start=10.....start=120)
- 获取日志内容(同时生成Article 放在list中并排序)
- 生成日志
这三个分别对应三个工具类:
具体代码就不发了 不是很难 大家有兴趣自己动手下吧
相关推荐
拖动、ListView/RecyclerView光标、仿豆瓣写日志,这里只是提供一个源码,但是并不可运行,需要耐心去解读,才可以理解使用代码
源代码:网站制作豆瓣电影
豆瓣的成长路线,介绍豆瓣网的架构及成长路线,值得一看!
基于python抓取豆瓣电影TOP250的数据及进行分析.pdf
豆瓣镜像源
源代码:网站制作豆瓣图书
微信小程序demo:豆瓣电影:使用API(源代码+截图)微信小程序demo:豆瓣电影:使用API(源代码+截图)微信小程序demo:豆瓣电影:使用API(源代码+截图)微信小程序demo:豆瓣电影:使用API(源代码+截图)微信小程序demo:...
豆瓣豆瓣豆瓣豆瓣
使用动态IP池+cookie爬取豆瓣豆瓣影评数据
豆瓣网基本功能都有,主页与其他页面的跳转,账户登陆判断等等,读书页,电影页,音乐页,小组页,豆瓣FM页,同城页,
python web网页制作 豆瓣250部高分电影,可用于Python web练习用,程序亲测有效
爬取豆瓣电影短评并制作词云
小程序源码 豆瓣电影 (代码+截图)小程序源码 豆瓣电影 (代码+截图)小程序源码 豆瓣电影 (代码+截图)小程序源码 豆瓣电影 (代码+截图)小程序源码 豆瓣电影 (代码+截图)小程序源码 豆瓣电影 (代码+截图)小程序源码 ...
基于python的豆瓣电影数据采集与分析可视化.pdf
从豆瓣电影评分算法说起.pdf
基于vue搭建一个简易版豆瓣
爬取豆瓣电视剧天盛长歌影评,并去掉其中的停止词,生成词云,
豆瓣Top 250电影数据挖掘及评分预测.pdf
微信小程序源码 豆瓣电影(学习版)微信小程序源码 豆瓣电影(学习版)微信小程序源码 豆瓣电影(学习版)微信小程序源码 豆瓣电影(学习版)微信小程序源码 豆瓣电影(学习版)微信小程序源码 豆瓣电影(学习版)微信小程序源码...
微信小程序仿豆瓣电影源码微信小程序仿豆瓣电影源码微信小程序仿豆瓣电影源码微信小程序仿豆瓣电影源码微信小程序仿豆瓣电影源码微信小程序仿豆瓣电影源码微信小程序仿豆瓣电影源码微信小程序仿豆瓣电影源码微信小...