一、写在前面
因为自己有蓝调口琴曲谱采集需求,于是就断断续续花了大概2~3天的时间写了这个爬虫。
目前只能采集蓝调口琴曲谱和伴奏音频,后续会慢慢添加文字教程与视频教程的爬取。
PS:这里我使用到了Cookie来获取查看权限,所以这个爬虫也只面向有会员权限的小伙伴使用。
二、细节介绍
1.登录
采用Cookie验证的方式登录:
httpGet.setHeader("Cookie", prop.getProperty("Cookie"));
httpGet.setHeader("User-Agent", prop.getProperty("User-Agent"));
2.资源爬取方式
采用的是资源链接获取
->请求资源
->下载资源
的方式,以获取曲谱资源为例:
// 获取到当前图片的地址 并重新发送请求
url = imageMap.get("url");
httpGet = new HttpGet(url);
response = httpClient.execute(httpGet);
httpEntity = response.getEntity();
file_img = new File(rootDir+"/"+name+".png");
if(file_img.exists()){
file_img.delete();
}
BufferedOutputStream bw_img = new BufferedOutputStream(new FileOutputStream(file_img,true));
byte[] byt = EntityUtils.toByteArray(httpEntity);
bw_img.write(byt);
bw_img.close();
3.使用到的Java包
主要是使用到了以下包
<!-- 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 爬虫包 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
jsoup用来解析获取的页面,用来提取我们想要的资源链接
httpclient用来发送网络请求,用来请求我们获取到的资源地址
log4j用来做日志打印,用来提示下载进度
三、源码获取
所有代码我都放在我的GitHub仓库:tenholes-blues-down 中,有需要的小伙伴自行获取
不过因为时间匆忙,后面也因为三次元事情变多没时间,所以代码依旧很丑陋。