当前位置: 首页 > news >正文

小说网站怎么建设外贸网站如何做免费推广

小说网站怎么建设,外贸网站如何做免费推广,培训机构网站如何建设,thinkphp网站优化背景 因为经常出差火车上没网、不方便电子书阅读器批注#xff0c;需要从某网站上批量下载多本书籍的图片并自动打包成PDF文件。 分析 1、尝试获得图片地址#xff0c;发现F12被禁 解决方法#xff1a;使用Chrome浏览器#xff0c;点击右上角三个点呼出菜单#xff0c;…背景 因为经常出差火车上没网、不方便电子书阅读器批注需要从某网站上批量下载多本书籍的图片并自动打包成PDF文件。 分析 1、尝试获得图片地址发现F12被禁 解决方法使用Chrome浏览器点击右上角三个点呼出菜单选择“更多工具”-“开发者工具” 或者使用CtrlShiftC、CtrlShiftI 2、审查元素发现图片地址非常有规律 在class为side-image的div里有一个imgsrc是../files/mobile/1.jpg?220927153454去掉后面的问号部分即可得到/files/mobile/1.jpg通过观察这本书一共有多少页就会有多少个.jpg文件 3、回到栏目页可得到基目录所以批量抓取的大致思路是从栏目页获得基目录然后不断累加一个数直到获得jpg时对方服务器报404错误即可得到刚刚处理的那一页即最后一页。 4、如何从栏目页获得基目录呢 经观察每个page_pc_btm_book_body里都有两个a标签第一个是图片第二个是“在线阅读”按钮但是需要翻页怎么办呢所以需要建立一个变量收集它们每翻一页做一次收集。于是可以写如下收集函数 let books[] function catchBook() {let links document.getElementsByClassName(page_pc_btm_book_body);for (let i in links) {if(!links[i].children||links[i].children.length2)continue;let title links[i].children[0].title;let link links[i].children[0].href;books.push({title,link})} }然后在浏览器里每翻一页在控制台里执行一次catchBook这样书名和基目录就都获得了。 5、如何把JSON导出来呢 在控制台里JSON.stringify(books)把结果复制出来然后到网上随便找一个JSON转Excel的工具转出来即可然后注意把第一行当表头数据复制到第二行开始。 6、最后一步就写个程序从Excel里读出数据把图片都批量抓下来即可下面就说说如何写程序来处理。 需要引的包 dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion4.1.0/version /dependency dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion4.1.0/version /dependency dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml-schemas/artifactIdversion4.1.0/version /dependency dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-scratchpad/artifactIdversion4.1.0/version /dependency dependencygroupIdorg.apache.poi/groupIdartifactIdooxml-schemas/artifactIdversion1.4/version /dependency dependencygroupIdcom.itextpdf/groupIdartifactIditextpdf/artifactIdversion5.5.13.3/version /dependency从Excel到实体 先定义一个实体这里我多加了一列type表示类型name就是从上面那个里面获得的titlelink就是上面获得的link属性。 import lombok.Data;Data public class Book {private String type;private String name;private String link; }然后写个ExcelReader import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List;public class ExcelReader {public static ListBook readXlsxToList(String filePath) {ListBook bookList new ArrayList();try (FileInputStream fileInputStream new FileInputStream(filePath);Workbook workbook new XSSFWorkbook(fileInputStream)) {Sheet sheet workbook.getSheetAt(0);IteratorRow rowIterator sheet.iterator();// 获取表头第一行并转换为属性数组Row headerRow rowIterator.next();String[] headers getRowDataAsStringArray(headerRow);// 遍历每一行从第二行开始while (rowIterator.hasNext()) {Row row rowIterator.next();Book book new Book();// 遍历每个单元格并根据属性名称设置对应的实体类属性值for (Cell cell : row) {int columnIndex cell.getColumnIndex();if (columnIndex headers.length) {String headerValue headers[columnIndex];String cellValue getCellValueAsString(cell);setBookProperty(book, headerValue, cellValue);}}bookList.add(book);}} catch (IOException e) {e.printStackTrace();}return bookList;}private static String[] getRowDataAsStringArray(Row row) {String[] rowData new String[row.getLastCellNum()];for (Cell cell : row) {int columnIndex cell.getColumnIndex();rowData[columnIndex] getCellValueAsString(cell);}return rowData;}private static String getCellValueAsString(Cell cell) {String cellValue ;if (cell ! null) {switch (cell.getCellType()) {case STRING:cellValue cell.getStringCellValue();break;case NUMERIC:cellValue String.valueOf(cell.getNumericCellValue());break;case BOOLEAN:cellValue String.valueOf(cell.getBooleanCellValue());break;case FORMULA:cellValue cell.getCellFormula();break;default:cellValue ;}}return cellValue;}private static void setBookProperty(Book book, String propertyName, String propertyValue) {switch (propertyName) {case type:book.setType(propertyValue);break;case name:book.setName(propertyValue);break;case link:book.setLink(propertyValue);break;// 添加其他属性default:// 未知属性可以根据需要进行处理break;}} }从实体集合到批量下载成jpg 还需要想办法实现批量下载的功能需要注意的是Windows的默认文件排序是按ASC码排序的会把10.jpg排在2.jpg前面所以需要对页码格式化一下把它变成三位数。 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List;public class ImageDownloader {public static void downloadImages(ListBook bookList, String targetDir) {for (Book book : bookList) {String type book.getType();String name book.getName();String link book.getLink();String basePath targetDir / type / name;int count 1;boolean continueDownload true;if(!new File(basePath).exists()){new File(basePath).mkdirs();}while (continueDownload) {String imgUrl link files/mobile/ count .jpg;String outputPath String.format(%s/%03d.jpg, basePath, count);if (!imageExists(outputPath)) {try {downloadImage(imgUrl, outputPath);System.out.println(Downloaded: outputPath);} catch (IOException e) {System.out.println(Error downloading image: imgUrl);e.printStackTrace();continueDownload false;}} else {System.out.println(Image already exists: outputPath);}count;}}}private static boolean imageExists(String path) {Path imagePath Paths.get(path);return Files.exists(imagePath);}private static void downloadImage(String imageUrl, String outputPath) throws IOException {URL url new URL(imageUrl);HttpURLConnection httpConn (HttpURLConnection) url.openConnection();int responseCode httpConn.getResponseCode();if (responseCode HttpURLConnection.HTTP_OK) {try (InputStream inputStream httpConn.getInputStream();FileOutputStream outputStream new FileOutputStream(outputPath)) {byte[] buffer new byte[4096];int bytesRead;while ((bytesRead inputStream.read(buffer)) ! -1) {outputStream.write(buffer, 0, bytesRead);}}} else {throw new IOException(Server returned response code responseCode);}} }开始批量下载 import java.util.List;public class Test {public static void main(String[] args) {ListBook books ExcelReader.readXlsxToList(C:\\Users\\Administrator\\Desktop\\某某书库.xlsx);String targetDir D:\\书库\\;ImageDownloader.downloadImages(books, targetDir);} }写完执行回去睡一觉 jpg图片批量转成pdf 都下载完之后就可以想办法批量转成PDF格式了。 import com.itextpdf.text.*; import com.itextpdf.text.pdf.PdfWriter;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException;public class ImageToPdfConverter {public static void convertToPdf(String folderPath, String outputFilePath) {try {// 获取文件夹中的所有jpg文件File folder new File(folderPath);File[] files folder.listFiles((dir, name) - name.toLowerCase().endsWith(.jpg));// 预读第一章图片获得大小Rectangle rect null;if (files.length 0) {return;} else {Image image Image.getInstance(files[0].getAbsolutePath());rect new Rectangle(image.getWidth(), image.getHeight());}// 创建PDF文档对象Document document new Document(rect);document.setMargins(0, 0, 0, 0);// 创建PDF写入器PdfWriter writer PdfWriter.getInstance(document, new FileOutputStream(outputFilePath));writer.setStrictImageSequence(true);// 打开PDF文档document.open();// 遍历图片文件并将其加入到PDF文档中for (File file : files) {Image image Image.getInstance(file.getAbsolutePath());document.add(image);}// 关闭PDF文档document.close();System.out.println(PDF文件生成成功);} catch (FileNotFoundException | DocumentException e) {e.printStackTrace();} catch (MalformedURLException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}public static void main(String[] args) {String startDirD:\\书库\\开发技术\\;File[] subdirs new File(startDir).listFiles();for (File subdir : subdirs) {if(subdir.isDirectory()){convertToPdf(subdir.getAbsolutePath(), subdir.getAbsolutePath().pdf);}}} }结束 最后把PDF文件传到网盘上手机、平板、电脑随时可以下载离线看非常舒服。 注意自己抓取书籍自己看无所谓但通过网络分享出去是侵犯他人著作权的。
http://www.pierceye.com/news/31272/

相关文章:

  • 工程建设标准化网站大数据开发过程
  • 怎么欣赏一个网站设计图百度公司推广电话
  • 企业网站联系我们百度热点排行榜
  • 如何进行网站分析青岛做网站哪个最好
  • 怎么建网站教程建设网站费用分析
  • 企业网站建设平台的分析移动应用开发专业学什么
  • 洛阳建设银行网站wordpress 附件分离
  • 重庆做网站开发的集中华为邮箱登录入口
  • 怎样申请建网站网站设计的主要机构有哪些
  • 长宁哪里有做网站优化比较好网站建设捌金手指花总十三
  • 电子商务网站建设期末试题08答案百度公司销售卖什么的
  • 青岛做网站哪家公司好网店美工设计的四大要点
  • 南宁区建设银行招聘网站去除wordpress版权信息
  • 怎么建设网站临汾做网站需要几个程序
  • 手机购物网站 设计wordpress如果有图片显示图片
  • 官方网站内容可做证据吗wordpress docker安装目录
  • 物价局网站建设情况汇报网络及it维护外包
  • 教育局网站建设如何构建大型网站架构
  • 广东企业网站模板定制学生兼职网站开发
  • 电子商务网站建设与电子支付做eso哪家网站好
  • 电子商务网站规划从哪些方面入手移动互联网站建设
  • 湖南省建设厅官方网站官网做外贸的人如何上国外网站
  • 网站开发的软件环境设计家官网室内设计视频
  • 贵州网站定制搬瓦工装WordPress
  • 别人用我公司权限做网站广州互帮物流哪家公司做的网站
  • 非认证公众号wordpress郑州网站关键词优化
  • 网站怎么做导航栏网站开发常用工具
  • 林州网站建设服务上海网站怎么备案号
  • 东莞seo整站优化wordpress页眉插件
  • 中信建设有限责任公司陶扬深圳网站优化公司哪家好