简易爬虫
一、产品介绍
1.基本功能
程序运行后能够爬取爱下书小说网(www.aixiaxsw.com)任意小说
2.操作指南
程序运行后在控制台输入准备爬取的小说目录页的url(如:https://www.aixiaxsw.com/104/104509/)
注:若输入url格式不对,则无法正常运行。
3.爬取结果
程序运行结束后,所得小说将存至.md文档中。
二、拓展点及各种情况说明
(代码主体与模板相同)
1.url输入修改
作业网站与培训示例网站有点小差别,作业网站各章节元素属性类似如<a href="/15/15675/9716041.html">序幕</a>
,如果按原来代码运行会出现/15/15675/15/15675形式的重复,故此处采用拼接,将既定的网站首页url与各章节元素进行拼接,从而解决重复的问题。
2.markdown排版
文档会经过markdown格式排版,题目作者为通过一级标题排版,章节题目通过二级标题排版,且章节题目通过超链接[]()
可链接至文章原网页。
代码:fileOut.write((" \n\n## " +"[" +chapterName+"]" +"("+url + subLink+")" + "\n\n " + chapterContent.text()).getBytes());
3.url输入不合法
通过正则表达式判定输入是否合法,构建Pattern对象,及调用 Pattern 对象的 matcher 方法获得 Matcher 对象,但语法学习不熟悉,所以该功能并不完善,暂时只能判定输入是否为url,而无法判定是否为本站内容或为用户补全url。
String content = menuUrl;
String regStr = "^((http|https)://)([\\w-]+\\.)+[\\w$]+[^\\d{1,}$]+[^\\d{1,}$]?";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
if (matcher.find()){
System.out.println("满足格式,准备爬取。");
}else {
System.out.println("不满足格式!");
System.exit(0);
}
4.用户网络不佳
通过try catch语法进行网络异常判定及处理。
在遍历各章节的循环中的try语法中进行网络超时限制,如果网络正常,则程序正常进行;如果网络异常,则进入catch语句中,在catch语句中写入System.exit(0);
,执行后程序结束。
5.工件打包
在idea中通过快捷键Alt+shirt+ctrl+s,即可在工件中选择jar包,后选择路径,之后在构建中进行构建工件,即可得到jar包。
三、学习情况
- 对css选择器有了进一步的了解,用于查找要设置样式的 HTML 元素,可以分为简单选择器、组合器选择器、伪类选择器、伪元素选择器、属性选择器,熟悉了简单的语法,但实际应用练习尚少。
- 其他零零散散的在拓展点写到,不再赘述。