2022首次更文挑战第6天 | 基于SSM的音乐系统教程05爬虫功能模块

87 阅读2分钟

「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战

这篇讲一讲音乐系统的爬虫功能模块。

爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

上面这一段摘自百度百科,解释的太官方,很多人看不懂什么意思,简单来讲,爬虫就是把一个网站上的信息抓取,捕获,把这些信息弄下来,按照自己想要的形式呈现出来。

一般来讲,爬虫的主要语言是python,用phython爬取网站上的信息最方便。但是呢,也可以用java,只不过python最方便。

为什么音乐系统要用爬虫呢?这是让网站功能更加丰富,如果网站简单,形式太单一,让人看不出亮点。

音乐系统爬虫主要爬取哪些信息呢?主要爬取新闻,让人耳目一新,眼前一亮。

音乐系统爬取音乐网站上的音乐不可以吗?可以的,如果只是爬取音乐,很多关于音乐的功能就会用不上了,所以这里没有爬取音乐。

好了,上面关于爬虫业务相关的背景,接下来直接说技术了。

前端

$.ajax({
    "url": basePath+"/news.do",
    "method": "get",
    success: function (resp) {
        resp = JSON.parse(resp);
        var news = resp[Object.keys(resp)[0]];
        var str = "";
        for (var i = 1; i < news.length; i++) {
            str += "<li>";
            str += "<a class='title' href='" + news[i].url_3w + "' style='color: #000' target='_blank'>";
            str += news[i].title;
            str += "</a>";
            str += "</li>";
        }
        $("#news_ul").append(str);
    }
});

向后端发送请求,前端填充新闻内容。

后端代码

@RequestMapping("/news")
@ResponseBody
public String news(){
	HttpURLConnection connection = null;
	InputStream is = null;
	BufferedReader br = null;
	StringBuilder result = new StringBuilder();
	try {
		URL url = new URL("http://c.m.163.com/nc/article/headline/T1348649580692/0-40.html");
		connection = (HttpURLConnection) url.openConnection();
		connection.setRequestMethod("GET");
		connection.setReadTimeout(15000);
		//开始连接
		connection.connect();
		//获取响应数据
		if (connection.getResponseCode() == 200) {
			is = connection.getInputStream();
			if (null != is) {
				br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
				String temp;
				while (null != (temp = br.readLine())) {
					result.append(temp);
				}
			}
		}
	} catch (Exception e) {
		return null;
	} finally {
		if (null != br) {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		if (null != is) {
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		//关闭远程连接
		if (null != connection) {
			connection.disconnect();
		}
	}
	return result.toString().replaceAll("%(?![0-9a-fA-F]{2})","%25");
}

代码讲解: 1、创建访问链接:HttpURLConnection connection 2、创建连接URL url,指定爬虫要访问的链接 3、设置请求方式:connection.setRequestMethod("GET");请求方式主要有GET,POST,PUT,DELETE等等 4、设置连接超时时间:connection.setReadTimeout(15000);单位时间是毫秒,如果访问超过这个时间,就不再去访问了 5、访问状态:connection.getResponseCode() == 200 访问状态有几种常见的,200表示正常的,OK的,404表示资源不存在,505表示内部资源错误 6、获取返回的数据:is = connection.getInputStream(); 7、中途是读取数据 8、最后记得要关闭资源

实现效果

Snipaste_2021-05-31_23-37-29.png