java爬虫抓取网页数据( Java也可以做爬虫,一键爬取文章内容并保存入库! )
优采云 发布时间: 2022-01-27 13:19java爬虫抓取网页数据(
Java也可以做爬虫,一键爬取文章内容并保存入库!
)
简介其实Java也可以是爬虫。虽然没有Python强大,但基本功能没有问题。本文将介绍一键抓取文章内容并存入库。一键爬取配置文件介绍:
<br /><br />com.kotcrab.remark<br />remark<br />1.2.0<br />
创建爬虫基础配置表,匹配相关博客元素:
CREATE TABLE `app_blog_crawl` (<br />`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',<br />`type` VARCHAR(255) NOT NULL COMMENT '类型',<br />`url` VARCHAR(255) NOT NULL COMMENT '网址',<br />`title` VARCHAR(255) NOT NULL COMMENT '标题元素',<br />`content` VARCHAR(255) NOT NULL COMMENT '内容元素',<br />`gmt_create` DATETIME NOT NULL COMMENT '创建时间',<br />`gmt_modified` DATETIME NOT NULL COMMENT '修改时间',<br /> PRIMARY KEY (`id`)<br /> ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
背景抓取并将富文本转换为 MD 格式:
/**<br /> * 爬取-爪哇笔记<br /> * 1)获取数据库配置<br /> * 2)根据数据库配置读取文章相关元素<br /> * 3)富文本转MD,并返回前端实体内容<br /> * 源码:https://gitee.com/52itstyle/SPTools<br /> * @param url<br /> * @return<br /> */<br />@RequestMapping("crawl")<br />public Result crawl(String url) {<br />try {<br />String domain = JsoupUtils.getDomain(url);<br />String nativeSql = "SELECT * FROM app_blog_crawl WHERE url = ?";<br /> AppBlogCrawl crawl =<br /> dynamicQuery.nativeQuerySingleResult(AppBlogCrawl.class,nativeSql,new Object[]{domain});<br />if(crawl!=null){<br /> Document document = JsoupUtils.getDocument(url);<br />String title = document.select(crawl.getTitle()).text();<br />String content = document.select(crawl.getContent()).html();<br /> Remark remark = new Remark();<br />String markdown = remark.convertFragment(content);<br /> AppBlog blog = new AppBlog();<br /> blog.setTitle(title);<br /> blog.setContent(markdown);<br /> blog.setUrl(url);<br />return Result.ok(blog);<br /> }else{<br />return Result.error("目前暂不支持此网站抓取");<br /> }<br /> } catch (Exception e) {<br />return Result.error("抓取异常");<br /> }<br />}
工具:
/**<br /> * 工具类<br /> */<br />public classJsoupUtils{<br /><br />/**<br /> * 获取 document<br /> * @param url<br /> * @return<br /> * @throws IOException<br /> */<br />publicstatic Document getDocument(String url)throws IOException {<br /> Document document = Jsoup.connect(url)<br /> .timeout(100000)<br /> .ignoreContentType(true)<br /> .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")<br /> .get();<br />return document;<br /> }<br /><br />/**<br /> * 获取域名<br /> * @param url<br /> * @return<br /> */<br />publicstatic String getDomain(String url){<br />return url.split("/")[0]+"//"+url.split("/")[2];<br /> }<br />}
预览
总结其实目前很多社区都有个人博客或者微信公众号的同步功能,比如腾讯云社区、云栖社区、开源中国,国内最大的社区。如果觉得不好玩,还可以实现更有趣的功能,比如定时抓取指定日期的博文,指定关键词。
<strong style="color:rgb(39,39,39);">— 【 THE END 】—</strong>本公众号全部博文已整理成一个目录,请在公众号里回复「m」获取!
3T技术资源出炉!包括但不限于:Java、C/C++、Linux、Python、大数据、人工智能等,在公众号回复“1024”即可免费领取!!