"城市学院上课笔记(1).md"
本次课程主要涵盖了使用Python和Java进行酷我音乐网站的数据爬取,并结合JavaWeb中的Servlet技术及微信小程序开发,实现了一个完整的项目。项目不仅包括了PC端应用,还涉及到了微信小程序端,并在Tomcat服务器上进行了部署。
### 实训周 - 酷我音乐爬虫
#### JavaWeb基础
项目基于JavaWeb技术,使用Servlet作为后端处理逻辑的核心组件。Servlet是Java中用于处理HTTP请求的服务器端程序,可以接收和响应来自客户端(如浏览器)的请求,提供动态内容服务。Tomcat作为轻量级的Java应用服务器,是运行Servlet和JSP的首选平台。
#### 环境配置
开发环境包括以下组件:
1. **JDK**:Java Development Kit,是编写Java应用程序的基础,提供了编译、运行Java程序所需的所有工具。
2. **Tomcat**:安装并配置Tomcat服务器,用于部署Servlet应用。
3. **IDEA (Eclipse)**:IntelliJ IDEA或Eclipse,是开发Java项目的集成开发环境。
4. **微信开发者工具**:用于微信小程序的开发和调试,支持实时预览、真机调试等功能。
#### 爬虫实现
针对酷我音乐网站,爬虫的主要任务是对音乐数据进行抓取,包括搜索功能和音乐播放信息。在实现过程中遇到了403 Forbidden错误,这是服务器对非法或未授权请求的拦截。
#### 解决403 Forbidden问题
为了解决403错误,需要在HTTP请求中添加特定的请求头,模拟合法用户行为。对于酷我音乐的爬虫,需要设置以下三个关键的请求头:
1. **Hm_token**:一个特定的密钥,用于识别和验证请求。
2. **Cross**:另一个用于验证的字段,通常与服务器的策略有关。
3. **Referer**:指明请求来源的URL,让服务器知道请求是从哪个页面发起的。
#### 歌曲搜索与播放
1. **搜索功能**:通过分析搜索URL(例如:`http://kuwo.cn/api/www/search/searchMusicBykeyWord`),发现需要传递关键词参数(如 `%E8%96%9B%E4%B9%8B%E8%B0%A6`)以及其它必要的参数,如分页信息(pn和rn)和请求标识(reqId)。
2. **歌曲播放**:获取歌曲播放URL,例如:`http://kuwo.cn/api/v1/www/music/playUrl`,其中mid参数是音乐ID。注意到有些URL只能播放免费歌曲,而某些"万能播放地址"可能能绕过限制。
#### 歌词与歌曲详情
歌词和歌曲详细信息可以通过单独的API获取,如`https://m.kuwo.cn/newh5/singles/songinfoandlrc`,这个接口需要传递音乐ID(musicId)和其他相关参数,返回包含歌词和歌曲详细信息的数据。
### 微信小程序端
项目的微信小程序端允许用户在移动端访问和交互,提供与PC端相似的功能,包括搜索、播放音乐等。在微信开发者工具中,可以进行小程序的界面设计、代码编写、模拟器测试和真机调试。
### 项目部署
完成开发后,将JavaWeb应用打包成WAR文件,部署到Tomcat服务器,使得项目在互联网上可被访问。同时,微信小程序也需要在微信开发者平台进行发布,以便用户能够在微信中使用。
通过这次实训,学生不仅学习了JavaWeb和爬虫的基本技术,还掌握了微信小程序的开发流程,提升了综合项目实施能力。