手工下载人教网(www.pep.com.cn)的课本实在太麻烦,自己动手写了个批量下载小程序(java版), 一次下载一整本电子书,并且按顺序存放。代码需要 jsoup-1.7.2.jar 库支持, 命令行运行.cmd执行java -jar downpep.jar "要下载的人教网电子书首页地址" "下载目录".运行完成后在指定目录可找到按电子书的目录顺序保存的内容图片

/** To change this template, choose Tools | Templates* and open the template in the editor.*/
package downpep;import java.io.*;
import java.net.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import org.jsoup.Jsoup;
import org.jsoup.select.*;/**** @author ShiZhuolin*/
public class Downpep {/*** @param args the command line arguments*/public static void main(String[] args)throws Exception {URI uri = URI.create(args[0].trim());Downpep pep = new Downpep();pep.down(uri, args[1].trim());}public void down(URI uri, String path) throws Exception {URI[] uris = getLinks(uri);System.out.println("down:");for (int i = 0, length = uris.length; i < length; i++) {try {URI img = getIMG(uris[i]);String filename = gFilename(img, i);//if (img != null) {downimg(img, path + filename);//}System.out.println(i + "/" + length + " ok");} catch (Exception e) {System.out.println(i + "/" + length + " " + e.getMessage());}}System.out.println("ok");}public String gFilename(URI uri, int i) {String filename = i + uri.toString().substring(uri.toString().lastIndexOf('.'));while (filename.length() < 8) {filename = "0" + filename;}return filename;}public void downimg(URI uri, String filename) throws Exception {URLConnection connect = uri.toURL().openConnection();BufferedOutputStream bout;try (java.io.BufferedInputStream bin = new BufferedInputStream(connect.getInputStream())) {bout = new BufferedOutputStream(new FileOutputStream(new File(filename)));byte[] b = new byte[10];while ((bin.read(b)) != -1) {bout.write(b);}bout.flush();bin.close();}bout.close();}/*** 获取指定页面的图片地址** @param uri* @return*/public URI getIMG(URI uri) throws Exception {Elements elements;org.jsoup.nodes.Document doc;doc = Jsoup.connect(uri.toString()).get();elements = doc.select("#doccontent IMG");for (org.jsoup.nodes.Element elem : elements) {return uri.resolve(elem.attr("src"));}return null;}/*** 获取所有的html链接** @param uri* @return* @throws ParserConfigurationException* @throws SAXException* @throws IOException*/public URI[] getLinks(URI uri)throws ParserConfigurationException, SAXException, IOException {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();org.w3c.dom.Document document = builder.parse(uri.toString());NodeList nodes = document.getElementsByTagName("L");int length = nodes.getLength();URI[] uris = new URI[length];for (int i = 0; i < length; i++) {uris[i] = uri.resolve(nodes.item(i).getTextContent());}return uris;}
}

项目文件(netbeans)

用Java批量下载人教网电子课本和教师用书相关推荐

  1. java批量下载多个文件并压缩

    java批量下载多个文件并压缩 本段代码的功能主要是实现通过文件主键,循环遍历下载各种格式的文件,下载后由java数据流处理压缩成一个zip格式的压缩包返回给前端页面. 后端实现控制层(Control ...

  2. java批量下载demo_OBS JAVA SDK 实践8:批量下载文件(e.g 下载文件夹)

    1背景介绍& 效果展示 通过OBS JAVA SDK可以实现批量下载文件,如下载文件夹,效果如下. 注:有关标准存储.低频访问.归档存储三种存储类型的更多信息,参考链接:https://sup ...

  3. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util;import javax.servlet.http.HttpServletRequest; import ...

  4. 初中人教版电子课本app_电子课本|2020秋 部编人教版初中历史七年级上册教材电子课本(高清更新可打印)...

    部编人教版初中历史电子课本 为了帮助更多的学生进行科学的学习,笔者对部编人教版初中历史七至九年级上册的电子课本进行了归纳汇编,以方便更多的学生可以随时随地进行学习.教材蕴含着巨大的学习价值, 希望学生 ...

  5. Java批量下载并打成压缩包zip格式

    @ApiOperation("批量下载并打成压缩包zip格式")@Log(title = "批量下载并打成压缩包zip格式", businessType = B ...

  6. java批量下载生成zip压缩包

    设计思路: 1.本地先创建一个zip文件 2.将批量下载的文件依次放入zip文件中 3.将zip文件返回给前端 //一.本地先生成zip文件//要批量下载的文件id数组 String[] ids = ...

  7. java批量下载为zip

    前言: 1.前端: 在这里插入代码片 2.后端 /** 批量下载为 zip **/ import org.apache.tools.zip.ZipEntry; import org.apache.to ...

  8. JAVA 批量下载文件

    最近项目有个需求,用户想对挂有附件的数据记录 实现一键下载全部附件(目前项目仅支持每次点击单条记录进行附件下载),下面记录我实现的解决方案. 项目框架基于SSM service业务实现层(impl): ...

  9. python 批量下载知网(cnki)论文_Python 实现 CNKI批量下载 和FireFox Extension 入门学习笔记...

    ‍Python 实现 CNKI批量下载 和FireFox Extension 入门学习笔记‍ 由于需要也是为了督促自己学习新的东西,我原本想要尝试着写一个爬虫程序,能够在cnki上自动得将论文进行批量 ...

最新文章

  1. 批处理 bat 提取项目war包
  2. error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值...
  3. 关于Android中XML解析方式
  4. [转] apache配置rewrite及.htaccess文件
  5. ddos攻击工具_简单有效的ddos攻击防御方法
  6. matlab自动排版,工具方法| Matlab 简单绘图与排版
  7. linux的shell命令 a,linux shell命令大全(都是随堂笔记)
  8. iOS开发造轮子 | 通用占位图
  9. python 代码片段22
  10. HXSafeGuard工程通过VS2010编译未安装VS2008出现以下错误
  11. 优秀程序员是怎样提高敲代码的效率?有这些工具就够了!
  12. Practical Machine Learning实用机器学习 章1
  13. Python TCP 学习笔记
  14. java 2的64次幂_2的N次方对照表 2的64次方等于几?
  15. Pairwise 找到你的另一半
  16. python编写水仙花数(超完全数字不变数、自恋数、自幂数、阿姆斯特朗数)
  17. drawio二次开发
  18. 月下夜想曲200.6(攻略3)
  19. “两两”求和问题技巧
  20. Mac OS X 键盘快捷键

热门文章

  1. div的flex布局,简单介绍
  2. Idea 删除当前一行的快捷键
  3. Word -- offic2010 --02 插入代码 稿纸 公式等
  4. 删除设备和驱动器中WPS网盘图标
  5. DW_Pandas_Task2
  6. 电压电流到底是什么?
  7. 狗狗搜索受版权保护文件破解方法~
  8. 风速传感器原理知多少
  9. YonBuilder前端框架MDF介绍
  10. 浙江师范大学网络改造总结(博达交换机网络安全防御技术应用)