使用jsoup爬取了下某个网站中的《冰与火之歌》信息,并将格式保存成了json格式到文本文件中。

具体执行的代码如下:

public static void main(String[] args) throws IOException {TestJsoupBingYuHuo tj = new TestJsoupBingYuHuo();tj.test();}static String urlPath = "http://www.bingyuhuozhige.cc";static String srcPath = "D:\\study\\jsoup\\bingyuhuozhige\\";static boolean writeOnOff = true;public void test() throws IOException {Document document = JsoupUtils.getRoot(urlPath);Elements h3lists = document.select("h3");this.analysisH3List(h3lists);}// 解析册信息private JSONArray analysisH3List(Elements h3List) throws IOException {int n = 0;for (Element h3 : h3List) {n++;if (n < 7) { //改变这里的数字,可以设置从第几册开始跑continue;}// h3 是册名String h3Text = h3.text().trim();System.out.println(h3Text);if(writeOnOff) {FileUtils.createDir(srcPath + h3Text); // 创建册目录}// p 是册的描述Element p = this.analysisPList(h3, srcPath + h3Text);// 解析册的描述,并存储到册对应目录下的文件中// div class = row 内的 links 是每个章节的首页this.analysisFirstPageLink(p, srcPath + h3Text);}return null;}// 解析 册的描述private Element analysisPList(Element h3, String path) {Element p = null;while (p == null || !p.tagName().equals("p")) {if (p != null) {p = p.nextElementSibling();} else {p = h3.nextElementSibling();}System.out.println("=");}String pText = p.text().trim();System.out.println(pText);if(writeOnOff) {            FileUtils.writeLine(path + File.separator + "简述", pText);}return p;}// 解析每章的首页urlprivate JSONArray analysisFirstPageLink(Element p, String path) throws IOException {Element divRow = null;while (divRow == null || !divRow.tagName().equals("div") || !divRow.hasClass("row")) {if (divRow != null) {divRow = divRow.nextElementSibling();} else {divRow = p.nextElementSibling();}System.out.println("=");}Elements links = divRow.select("a[href]");for (Element link : links) {String url = link.attr("href").trim();String title = link.attr("title").trim();// 为每个 title 创建一个 文本title = title.startsWith("第六十一章 狮鹫的重生") ? "第六十一章 狮鹫的重生(格里夫·琼恩·克林顿)" : title;if(writeOnOff) {             FileUtils.writeLine(path + File.separator + title + ".txt", title);}System.out.println(title + " = " + url);this.analysisAllPagesLink(url, path + File.separator + title + ".txt");//进行下一步,解析每个章节所有页面的链接,并获取每页的文本内容}return null;}// 解析 每章 首页,获取到每个章节的所有页链接 ,并获取每页的文本内容// 记得要做 睡眠处理,避免因网络延时出错private void analysisAllPagesLink(String firstPageUrl, String path) throws IOException {try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}Document document = JsoupUtils.getRoot(urlPath + firstPageUrl);Elements paginations = document.select("div.pagination");Element pagination = paginations.get(0);Elements links = pagination.select("a[href]");if(links.size() > 0) {int lastNum = 2;for (Element link : links) {String title = link.text().trim(); if("尾页".equals(title)) {String url = link.attr("href").trim();lastNum = Integer.parseInt(url.substring(url.indexOf("_") + 1, url.indexOf(".html")));}}//解析每页的内容,把内容写到文件中this.analysisPageText(document, path);String urlPrefix = firstPageUrl.substring(0, firstPageUrl.indexOf(".html"));for(int i = 2 ; i <= lastNum ; i ++) {//解析每页的内容,把内容写到文件中this.analysisPageText(urlPath + urlPrefix + "_" + i + ".html", path);System.out.println(i);}}else {//解析每页的内容,把内容写到文件中this.analysisPageText(document, path);}}private void analysisPageText(String pageUrl, String path) throws IOException {try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}Document document = JsoupUtils.getRoot(pageUrl);this.analysisPageText(document, path);}private void analysisPageText(Document document, String path) {Elements span9s = document.select("div.span9");if(span9s.size() < 1) {span9s = document.select("div.span12");}Element span9 = span9s.get(0);String text = span9.html();text = text.substring(0, text.indexOf("<div class=\"pagination\""));
//      System.out.println(text);int begin = text.lastIndexOf("</div>") + 6;text = text.substring(begin);text = text.replaceAll("<br>", "\n\r").replaceAll("<p>", "\n\r").replaceAll("</p>", "\n\r");if(writeOnOff) {             FileUtils.writeLine(path, text);}}

代码中确实的其它jar包信息和工具类,见我的另一篇文章,链接如下:

jsoup爬取网站信息之《本草纲目》

jsoup爬取网站信息之《冰与火之歌》相关推荐

  1. 使用Jsoup爬取网站信息(以天猫为例)

    http://download.csdn.net/detail/lostchris/9432552 上面是案例... 过年的时候一直想弄点网络爬虫好为今年毕业论文提供数据准备... 楼主先后试过htt ...

  2. 使用Python和selenium的Chromedriver模拟登陆爬取网站信息(beautifulsoup)

    爬取的信息很多,所以需要设置断点,在程序重启时能继续爬取.并且能在断掉之后自动重启. 1.setting.py 对爬取的常量进行设置 """ 基本信息设置 "& ...

  3. 基于java使用jsoup爬取网站投票数据的demo

    想爬取一个投票网站的实时数据 获取姓名和票数 查看网站源码(这里只展示一部分) <table border="0" cellpadding="0" cel ...

  4. 爬虫简单爬取网站信息

    首先打开想要爬取的网站,找到想要爬取的内容 开始编写代码: 引入需要的模块 import os #引入系统模块 from bs4 import BeautifulSoup # 网页解析,获取数据 im ...

  5. 手把手教你爬取网站信息

    如题,理解这一部分需要一定的Python基础,有些代码我不做详细解释了,但是用这个方法是确实可以爬到的. 此次用以下这个页面(可以用md5软件解密) 1476409DEDD7A55FE86915BC3 ...

  6. HtmlUnit、httpclient、jsoup爬取网页信息并解析

    转载:http://tianxingzhe.blog.51cto.com/3390077/1755511 转载于:https://www.cnblogs.com/puhongtao/p/7063563 ...

  7. 利用Jsoup爬取网页内容

    jsoup的强大之处在这里就不多说,最近在写项目,需要爬取网页上的内容,自然想到的是利用Jsoup来处理,项目中是利用Jsoup爬取学校信息门户的新闻消息,然后放进客户端 网页的html代码如下 &l ...

  8. Jmeter+ForEach控制器+BeanShell取样器+BeanShell PostProcessor爬取网站信息储存csv

    1.正则提取器+ForEach控制器+BeanShell PostProcessor+BeanShell 取样器,爬取网站信息并写入到csv中 2.访问网站设置 3.正则提取设置,匹配数字-1代表提取 ...

  9. python爬虫爬取房源信息

      目录 一.数据获取与预处理 二.csv文件的保存 三.数据库存储 四.爬虫完整代码 五.数据库存储完整代码 写这篇博客的原因是在我爬取房产这类数据信息的时候,发现csdn中好多博主写的关于此类的文 ...

最新文章

  1. 两下或多下回车造成数据库多次提交事物的解决方法
  2. Pytorch的安装教程
  3. “adb不是内部或外部命令,也不是可执行的应用程序”错误原因及解决方法
  4. WebService的两种方式SOAP和REST比较
  5. Linux查看系统位数命令
  6. Android 4.1最终版SDK和ADT Plugin全线发布
  7. mysqlsla安装与慢查询分析
  8. 当时间管理碰上大数据,从此,悠悠时光也终不再那么漫长
  9. Teradata在中国银行业的应用简介
  10. 阿里云服务器ip:端口号无法访问
  11. easyui datalist 不显示数据_爬虫练习——豆瓣电影信息爬取及数据可视化
  12. Ubuntu 右键打开终端
  13. 字符串缓冲区和字符串构造器
  14. 四.单纯形法(两阶段和大M法)
  15. js如何删除数组第一个和最后一个元素
  16. 1.9w粉丝带动近100w播放量,推广黑马不止一位
  17. VA_LIST可变参数列表的使用方法与原理
  18. 哲学生活中必背的哲学原理
  19. 微信小程序中如何发送客服消息给用户
  20. Python搭建简单的web服务器

热门文章

  1. 电信主机托管费用_电信服务器托管费用
  2. 用Python实现多国文字全文自动翻译
  3. 《银翼杀手》画面布局赏析
  4. (每日一练c语言)写入字符串到文件txt
  5. 李开复给中国大学生的第三封信—成功、自信、快乐
  6. 97岁的诺奖得主,活着就会有好事发生
  7. matplotlib动画演示:细胞自动机-探索生命起源
  8. 我认为接口存在的意义
  9. selenium+python登录新浪微博
  10. 租传奇手游服务器网站,传奇手游服务端