Java爬虫-爬取四级词汇网站音频
背景:
作为一个久不过四级的程序员有点不好意思啊,所以网购了冲刺卷认真过四级,签收后发现附送的词汇书音频网站竟然没有一键下载全部.只能自己写个伪爬虫了.
知识点:
- Java网络连接
- 字节流
- 文件输入输入
开工:
分析页面:
四级词汇乱序版网站:
http://download.dogwood.com.cn/online/4jlxbx/index.html
发现都是极具规律性的格式就像这样
http://download.dogwood.com.cn/online/4jlxbx/01.mp3
所以直接在基础string 后面添加 MP3编号即可,出于对复用考虑设计成一个下载工具类,方便以后爬虫时复用
代码
package top.chen.dogwood;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class DownloadUtils {// 目标链接字符串private String[] urlString;// 目标文件的格式private String targetType;// 存放文件路径private File rootDir;public String[] getUrlString() {return urlString;}public void setUrlString(String[] urlString) {this.urlString = urlString;}public String getTargetType() {return targetType;}public void setTargetType(String targetType) {this.targetType = targetType;}public File getRootDir() {return rootDir;}public void setRootDir(File rootDir) {this.rootDir = rootDir;}public DownloadUtils(String[] urlString, String targetType, File rootDir) {super();this.urlString = urlString;this.targetType = targetType;this.rootDir = rootDir;}public DownloadUtils(String[] urlString, String targetType, String rootDir) {super();this.urlString = urlString;this.targetType = targetType;this.rootDir = new File(rootDir);}public DownloadUtils() {super();}/*** 开始下载* * @throws Exception*/public void httpDownload() throws Exception {validate();final String[] urls = urlString;HttpURLConnection urlConnection;for (int i = 0; i < urls.length; i++) {urlConnection = (HttpURLConnection) new URL(urls[i]).openConnection();// 开启链接urlConnection.connect();InputStream inputStream = urlConnection.getInputStream();File temp = new File(rootDir,String.format("%02d",i+1)+"."+targetType);if (!temp.exists()) {temp.createNewFile();}FileOutputStream fileOutputStream = new FileOutputStream(temp, true);int tem;while (-1 != (tem = inputStream.read())) {fileOutputStream.write(tem);fileOutputStream.flush();}fileOutputStream.close();inputStream.close();}}private void validate() throws Exception {if (urlString.length <= 0) {throw new Exception("下载路径不能为空!");}if (null == rootDir || !rootDir.exists() || !rootDir.isDirectory()) {throw new Exception("目标文件夹不存在!");}}}
package top.chen.dogwood;import java.io.IOException;
import java.net.MalformedURLException;/*** 爬取指定链接的一组MP3 文件* * 放入指定的目录中* * @author Geek* */
public class Application {public static void main(String[] args) throws MalformedURLException,IOException {String base = "http://download.dogwood.com.cn/online/4jlxbx/";String[] strings = new String[35] ;for (int i = 1; i <= 35; i++) {strings[i-1] = base+String.format("%02d", i)+".mp3";}DownloadUtils downloadUtils = new DownloadUtils(strings,"mp3","E:\\360Downloads\\TempFile");try {downloadUtils.httpDownload();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
不过单线程下载速度有点慢 ,以后有空考虑下改成多线程下载
希望我的思路能对大家有所帮助! 不妥之处,欢迎指正
Java爬虫-爬取四级词汇网站音频相关推荐
- Java爬虫 爬取某招聘网站招聘信息
Java爬虫 爬取某招聘网站招聘信息 一.系统介绍 二.功能展示 1.需求爬取的网站内容 2.实现流程 2.1数据采集 2.2页面解析 2.3数据存储 三.获取源码 一.系统介绍 系统主要功能:本项目 ...
- java爬虫爬取主流房屋网站
最近博主要做一些分析课题,所以使用java爬取了主流的房屋网站,搞些事情,下面是我搞事情的思路,在结尾处我会投放我的源码文件,供大家下载: 导航: 设计思路 项目的包与类详解 部分重要代码展示 源码下 ...
- Jsoup学习 JAVA爬虫爬取美女网站 JAVA爬虫爬取美图网站 爬虫
最近对爬虫起了兴趣,但是网上都说做爬虫最好得语言是py.但是我只会java,所以就想能不能用java实现一个爬虫,百度搜索发现,其实java也有很多优秀得开源爬虫框架,包括Gecco,webmagic ...
- 基于Jsoup的Java爬虫-爬取必应壁纸网站的壁纸(Java静态壁纸爬虫实例)
准备阶段 1.必应壁纸网站:https://bing.ioliu.cn(爬取对象网站) 2.Jsoup包下载地址:https://jsoup.org/download(以下代码需要用到该包,记得导入包 ...
- java爬虫爬取互联网上的各大影视网站---360影视(附源码下载)
关于爬虫: 万维网上有着无数的网页,包含着海量的信息,无孔不入.森罗万象.但很多时候,无论出于数据分析或产品需求,我们需要从某些网站,提取出我们感兴趣.有价值的内容,但是纵然是进化到21世纪的人类,依 ...
- python java 爬数据_如何用java爬虫爬取网页上的数据
当我们使用浏览器处理网页的时候,有时候是不需要浏览的,例如使用PhantomJS适用于无头浏览器,进行爬取网页数据操作.最近在进行java爬虫学习的小伙伴们有没有想过如何爬取js生成的网络页面吗?别急 ...
- Java爬虫爬取wallhaven的图片
Java爬虫爬取wallhaven的图片 参考文章:JAVA Jsoup爬取网页图片下载到本地 需要的jar包:jsuop wallhaven网站拒绝java程序访问,所以要伪装报头. 发送请求时 C ...
- Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情
Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情 先识别商品url,区分平台提取商品编号,再根据平台带着商品编号爬取数据. 1.导包 <!-- 爬虫相关Jar包依赖 --><d ...
- Java爬虫 --- 爬取王者荣耀英雄图片
Java爬虫 - 爬取王者荣耀英雄图片 import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Docu ...
最新文章
- PHP设计模式:观察者模式
- java生成dex_Java反编译Dex – jadx
- 机器学习基石第三讲:types of learning
- bim 模型web页面展示_BIM+装配式建筑工程师2020年必须拿下的技能证书
- 晶科电力打造山东省最大物流港分布式光伏项目
- 计算机网络流量图阅读与理解,计算机网络流量监控的设计与实现
- windows 下eclipse 连HBASE
- 程序员的小技能,1行代码修改开机密码、1张图片让你电脑死机
- Flutter进阶第10篇: 本地存储,封装本地存储类,实现最简单的状态管理
- 这次都安排上了,零食好物全都 9 块 9 。
- 使用“override”声明的成员函数不能重写基类成员_【进阶Python】第七讲:接口与抽象基类...
- 计算机安装硬盘后无法启动不了,电脑一键装机后无法启动 电脑一键装机后无法启动解决办法详解...
- 注册表知识与技巧大全
- 400元DIY实现手机 笔记本 GPS导航
- 路由器连接光猫用桥接模式好还是用路由模式好?路由器桥接模式vs路由模式
- 系统无法联系dhcp服务器,Win10专业版解决无法联系DHCP服务器错误[Ipconfig / Renew]方法...
- 大一期末C语言大作业—结构体和链表框架
- 汉堡式折叠html,纯CSS3菜单汉堡包按钮变形动画特效
- 基于redis实现抢红包功能(包括余额退回处理)
- ps2015安装guideguide参考线辅助工具
热门文章
- LAMPSECURITY: CTF6 内网拿到root 20211226
- 什么是乘风人脸通行考勤平台
- java犀牛是什么意思_Java 8新特性探究(十二)Nashorn :新犀牛
- 声卡内录——概念简记
- 高项和PMP有什么区别?
- 实时即未来,大数据项目车联网之实时ETL开发的核心逻辑【六】
- GaN图腾柱无桥 Boost PFC(单相)二 (公式推到理解篇)
- Nextjs中ts语法中使用全局变量
- No virtual method initSDK(Landroid/content/Context;ILcom/tencent/imsdk/v2/V2
- 【NISP一级】1.2 网络安全法律法规