栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

我用几行Java代码撸了一个追书神器,真的是技术改变生活!老同学:艾玛真香!

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我用几行Java代码撸了一个追书神器,真的是技术改变生活!老同学:艾玛真香!


大家好,我是Spring小杨,一个有梦想的Java司机。

前不久,有个老同学找到我,问有没有什么靠谱的追书神器?


我想着这玩意无非用爬虫,但是还是得尽量低调,不然牢底坐穿!

正版网站的资源很难爬下来的,所以书源还是只能搜盗版网站,某趣阁就是个不错的选择。

说干就干,我立刻用eclipse创建了一个Java项目,还是按照之前的配方,用Hutool做定时任务。

因为要爬取网站信息,所以还是得借助jsoup。

 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

还是之前一样的配方,不过这次加了jsoup和javax.mail。为什么要发送邮件呢?那是因为我想要定时去检测网站的小说有没有更新,如果更新了,就及时把最新的章节通过邮件的形式发送给我,那不是更好吗?

这样我就可以立刻知道小说有没有更新了,然后更新的话,去自己的邮箱看就行了。

邮箱里面是肯定没有广告的啦!

public static HashMap cache = new HashMap<>();
public static Map cookies = new HashMap<>();
public static String url = "https://www.biquwx.la/xxx/";

首先,定义几个成员变量,分别是缓存cache,cookie 和 url。我就不用数据库了,用一个静态的HashMap来做缓存。cookie是每次爬取网页后保存的,就是尽量模拟得像我浏览器访问。最后是url,就是小说网站的实际地址,大概是这么一个目录。

 如果有更新,那就一定会出现在这个网页!

下面是我发送请求的代码:

Connection con = Jsoup.connect(url)
				.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0")
                .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*
	public static void sendMail() throws IOException{
		System.out.println("开始准备爬取..");
		Connection con = Jsoup.connect(url)
				.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0")
                .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
                .header("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
                .header("Accept-Encoding", "gzip, deflate")
                .header("Connection","keep-alive")
                .header("Upgrade-Insecure-Requests", "1").cookies(cookies);

		Response execute = con.execute();
		
		cookies = execute.cookies();
		
		String body = execute.body().toString();
		
		document doc = Jsoup.parse(body);
		
		Elements as = doc.getElementsByTag("a");
		boolean shouldSend = false;
		
		String start = FileUtil.readString("C:/start.txt", "UTF-8"); //读取开始章节,如果服务重启,必须重新修改该文件
		
		for (Iterator iterator = as.iterator(); iterator.hasNext();) {
			Element element = (Element) iterator.next();
			
			if(element.text().equals(start)){
				shouldSend = true;
			}
			
			if(shouldSend && element.text().startsWith("第")){
				//先检查是否已经在缓存中
				if(cache.containsKey(element.text())){
					System.out.println(element.text()+ "已经发送,无需重复发送!");
					continue;
				}
				con = Jsoup.connect(url + element.attr("href"));
				String content = Jsoup.parse(con.execute().body()).getElementById("content").html();
				
				cache.put(element.text(), "");
				
				MailAccount account = new MailAccount();
			     account.setHost("smtp.163.com");
			     account.setPort(Integer.valueOf(465));
			     account.setAuth(true);
			     account.setSslEnable(Boolean.valueOf(true));
			     account.setConnectionTimeout(1000L);
			     account.setSocketFactoryFallback(true);
			     account.setFrom("你的发送邮箱");
			     account.setUser("你的发送邮箱");
			     account.setPass("授权码");
			    // MailUtil.send(account, "你的接收邮箱",element.text() , content, true, new File[0]);
			     System.out.println("发送成功!");
			}
	
		}
	}

 

 最后,爬虫虽好,不过自娱自乐一下就好了哈,本文也只是提供一个传统思路,切勿用作违法用途哦~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331602.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号