博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsoup 爬小说
阅读量:6369 次
发布时间:2019-06-23

本文共 2160 字,大约阅读时间需要 7 分钟。

hot3.png

无聊的星期一,老姐要我找一本网上的小说,我看没有下载的,写了一个爬虫写入txt 文件,很简单

import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;import java.util.Calendar;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;/** *  * @author memode * */public class Test_1 {public static void atiricle(){Document newsdoc;long t1 = System.currentTimeMillis(); // 排序前取得当前时间  String link = "http://www.tywx.com/ty109892/";int num = 5846664; //初始化页码int chapter = 0;   //章节计数String tmpLink = "http://www.tywx.com/ty109892/"+num+".html";File file = new File("c:\\test.txt");  //存入路径  try {PrintStream ps = new PrintStream(new FileOutputStream(file));while (true) {//设置15s的超时时间if("404".equals(Jsoup.connect(tmpLink).timeout(15000).execute().statusCode())){break;}newsdoc = Jsoup.connect(tmpLink).userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21").timeout(5000).get();  //设置超时时间5s//判断if(null==newsdoc.getElementsByAttributeValue("class","kfyd").first()){break;}//标题String title = newsdoc.getElementsByAttributeValue("class","kfyd").first().select("h1").text();System.out.println(title);//获取下一章的链接tmpLink = link+ newsdoc.getElementsByAttributeValue("id","thumb").first().select("#pager_next").attr("href");System.out.println(tmpLink);//解析小说的正文String news_tmp = newsdoc.getElementsByAttributeValue("id", "content").select("div").remove().html().replaceAll("<.*?script[^>]*?>[\\s\\S]*?<\\/.*?script.*?>*", " ")     //过滤script脚本.replaceAll("(?i)
]*>\n
", "\n").replaceAll(" ", " ");   //过滤换行  和空格chapter++;//写入章节和正文ps.append(title+"\n\n");  ps.append(news_tmp+"\n");}} catch (IOException e) {System.out.println("网络异常   net error!");}System.out.println("已下载"+chapter+"章");long t2 = System.currentTimeMillis(); // 排序后取得当前时间  Calendar c = Calendar.getInstance();c.setTimeInMillis(t2 - t1);          System.out.println("耗时: " + c.get(Calendar.MINUTE) + "分 "                  + c.get(Calendar.SECOND) + "秒 " + c.get(Calendar.MILLISECOND)                  + " 毫秒");  }public static void main(String[] args) {new Test_1().atiricle();}}

转载于:https://my.oschina.net/codeinChina/blog/609068

你可能感兴趣的文章
canvas+websocket+vue做一个完整的你画我猜小游戏
查看>>
android复习清单
查看>>
工作代码备用
查看>>
spring cloud互联网分布式微服务云平台规划分析--spring cloud定时调度平台
查看>>
说说如何配置 Webpack
查看>>
小程序中使用箭头函数的问题
查看>>
走进 JDK 之 Long
查看>>
Android打地鼠游戏的修改和优化
查看>>
Java异常
查看>>
map、reduce、filter、for...of、for...in等总结
查看>>
html2canvas-实现页面截图
查看>>
入门 | 从文本处理到自动驾驶:机器学习最常用的50大免费数据集
查看>>
笔记-从源码角度分析alloc与init的底层
查看>>
消除GitHub上的历史记录
查看>>
自学 JAVA 的几点建议
查看>>
第十三天-企业应用架构模式-对象-关系元数据映射模式
查看>>
k8s与HPA--通过 Prometheus adaptor 来自定义监控指标
查看>>
Python 比特币教程之二: 机器人收发比特币
查看>>
虎牙直播在微服务改造方面的实践和总结
查看>>
怎样将优酷网站下载的视频KUX转MP4格式
查看>>