# lvmeng **Repository Path**: cdcp1315/lvmeng ## Basic Information - **Project Name**: lvmeng - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-03 - **Last Updated**: 2021-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 题目1 ##### 思路分析 猜想本题考查java爬取源网页数据能力,所以重点应该在寻找网页数据源。本人翻阅Serv-U的官网,官网只提供有最新版本的下载链接,并没有历史版本的列表信息。因此,本人的解法围绕爬取下图网页部分数据展开(本人也去csdn、太平洋下载等网站尝试爬取历史版本,但搜到的版本信息略显混乱且破解版较多,且爬取的步骤基本一致,遂使用官网进行爬取)。 ![爬取的网页源](https://gitee.com/cdcp1315/lvmeng/raw/master/题目1/爬取的网页源.png) ##### 技术选型 jsoup ##### 核心代码 ```java public class ServuAllVersion { public static void main(String[] args) throws IOException { List list = new ArrayList(7); // 爬取原网页中的serv-u的版本信息 getServuAllVersionName(list, "http://www.hiserv.cn/download/713980/"); // 将serv-u的所有版本信息写入txt文件 fillContentToText(list); } /** * 将serv-u的所有版本信息写入txt文件 * @param servAllVersion serv-u的所有版本信息集合 */ public static void fillContentToText(List servAllVersion) { if (null == servAllVersion || servAllVersion.size() == 0) { return; } BufferedWriter bufferedWriter = null; try { bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("all version of Serv-U.txt"), "UTF-8")); for (String versionName : servAllVersion) { bufferedWriter.write(versionName); bufferedWriter.newLine(); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (bufferedWriter != null) { bufferedWriter.close(); bufferedWriter.close(); } } catch (Exception e) { } } } /** * 爬取原网页中的serv-u的版本信息 * @param list 存放所有版本的名称的集合 * @param url 要爬取数据的原网址 * @throws IOException */ public static void getServuAllVersionName(List list, String url) throws IOException { // 获取页面文档数据 Document doc = Jsoup.connect(url).get(); // 获取页面上所有的tbody标签 Elements elements = doc.getElementsByTag("tbody"); // 本页面只有一个tbody标签 Element element = elements.get(0); // 拿到tbody标签下所有的子标签 Elements children = element.children(); for (Element element1 : children) { Elements tds = element1.getElementsByClass("fw_t"); for (Element td : tds) { // 得到版本名称 String servuVersionName = td.getElementsByTag("a").text(); // 将大写字母转换为小写 list.add(servuVersionName.toLowerCase()); } } } } ``` ##### 结果展示 ![all version of Serv-U](https://gitee.com/cdcp1315/lvmeng/raw/master/题目1/Serv-UAllVersion.png) #### 题目2 ##### 思路分析 猜想本题考查对加密方式的选择。 ##### 技术选型 MD5+AES+RSA ##### 流程图 ![登录认证流程图](https://gitee.com/cdcp1315/lvmeng/raw/master/%E9%A2%98%E7%9B%AE2/%E7%99%BB%E5%BD%95%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B%E5%9B%BE.png) ##### 详细设计 参见目录:题目2—>登录认证功能详细设计.docx