三方框架
- JSOUP
- okhttp
解析要素
- 翻章:上一章
- 翻章:下一章
- 目录
- 内容
表设计
/**
* 内容
*/
private String content;
@Field("content_title")
private String contentTitle;
@Field("chapter_url")
private String chapterUrl;
@Field("next_chapter_url")
private String nextChapterUrl;
@Field("last_chapter_url")
private String lastChapterUrl;
解析代码
public BookChapter content(String url) {
BookChapter bookChapter = new BookChapter();
BookSite bookSite = getSite(url);
try {
Document document = download(url);
Element titleElement = document.selectFirst(bookSite.getContentTitle());
if (titleElement != null) {
bookChapter.setName(titleElement.text());
}
Element chapterElement = document.selectFirst(bookSite.getChapterUrl());
if (chapterElement != null) {
bookChapter.setChapterUrl(chapterElement.absUrl("href"));
}
Element nextElement = document.selectFirst(bookSite.getNextChapterUrl());
if (nextElement != null) {
bookChapter.setNextChapterUrl(nextElement.absUrl("href"));
}
Element lastElement = document.selectFirst(bookSite.getLastChapterUrl());
if (lastElement != null) {
bookChapter.setLastChapterUrl(lastElement.absUrl("href"));
}
Element contentElement = document.selectFirst(bookSite.getContent());
if (contentElement != null) {
contentElement.select("a").remove();
contentElement.select("script").remove();
contentElement.select("style").remove();
bookChapter.setContent(contentElement.html());
}
} catch (IOException e) {
log.error(e.getMessage(), e);
}
return bookChapter;
}
最终结果
难点
技术没有什么难点,难在日常的维护上。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。