-
大小: 29.21MB文件类型: .rar金币: 1下载: 0 次发布日期: 2023-07-08
- 语言: Java
- 标签: Jsoup+Java
资源简介
经过测试,可以抓取一个完整的网站,包括网站的图片、css、js等。同时根据网站目录,在本地生成相同目录。使用Jsoup+Java。下载之后,可以直接运行。
代码片段和文件信息
package cn.yuping.haha;
import cn.yuping.haha.util.FileUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.*;
@WebServlet(name = “crawlWebServlet“ urlPatterns = “/crawlWeb“)
public class CrawlWebSite extends HttpServlet {
private final static String charSet = “utf-8“;
private static String rootDir;
private static String rootUrl; //“http://www.17sucai.com/preview/216556/2016-02-25/%E6%A9%99%E8%89%B2%E5%95%86%E5%9C%BAwap/“
private final static int timeOut = 30000;
/**网站上相对地址与绝对地址的映射*/
private static Map absRelativeUrlMap = new HashMap();
/**网站上的url与最终本地使用的url映射*/
private static Map urlmapMap = new HashMap();
/**网站上的cssjs*/
private static Map cssjsmapMap = new HashMap();
private static List allFiles = new ArrayList();
private static Set imgList = new HashSet();
/**过滤掉不爬取的内容格式*/
// public static final String filterExtArray [] = {“rar““zip““bmp““dib““gif““jfif““jpe““jpeg““jpg““png““tif““tiff““ico““pdf““doc““docx““xls““xlsx“};
public static final String filterExtArray [] = {“rar““zip““bmp““dib““jfif““jpe““jpeg““tif““tiff““ico““pdf““doc““docx““xls““xlsx“};
@Override
public void doPost(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException {
System.out.println(“start....“);
request.setCharacterEncoding(“UTF-8“);
rootUrl = request.getParameter(“rootUrl“);
rootDir = request.getParameter(“rootDir“);
HttpSession session = request.getSession();
if(rootUrl != null && !rootUrl.equals(““) && rootDir != null && !rootDir.equals(““)){
if(rootUrl.contains(“.html“) || rootUrl.contains(“.jsp“) || rootUrl.contains(“.htm“)){
session.setAttribute(“msg““网站抓取失败网址输入有误,不能有‘.html、.jsp’等结尾“);
response.sendRedirect(“index.jsp“);
return;
}
if(!rootUrl.endsWith(“/“)){
rootUrl = rootUrl.concat(“/“);
}
//获取所有urls
getSubUrls(rootUrlrootUrl);
//保存文件
for(String absUrl : absRelativeUrlMap.keySet()){
String content;
try {
content = readContent(absUrl);
} catch (IOException e) {
System.err.println(“url3=“+absUrl+“ 页面无效!“);
continue;
}
if(!absUrl.startsWith(rootUrl)){
continue;
}
String filePath = absUrl.substring(rootUrl.length());
filePath = FileUtils.parseFilePath(filePath);
//urlmapMap.put(absRelativeUrlMap.get(absUrl) filePath);//脱机运行和在服务器运行有所不同。。。
urlmapMap.put(absRela
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 36 2017-12-13 10:09 haha\.git\COMMIT_EDITMSG
文件 321 2017-12-05 10:07 haha\.git\config
文件 73 2017-12-05 10:07 haha\.git\desc
文件 89 2017-12-13 10:16 haha\.git\FETCH_HEAD
文件 23 2017-12-05 10:07 haha\.git\HEAD
文件 478 2017-12-05 10:07 haha\.git\hooks\applypatch-msg.sample
文件 896 2017-12-05 10:07 haha\.git\hooks\commit-msg.sample
文件 189 2017-12-05 10:07 haha\.git\hooks\post-update.sample
文件 424 2017-12-05 10:07 haha\.git\hooks\pre-applypatch.sample
文件 1642 2017-12-05 10:07 haha\.git\hooks\pre-commit.sample
文件 1348 2017-12-05 10:07 haha\.git\hooks\pre-push.sample
文件 4951 2017-12-05 10:07 haha\.git\hooks\pre-reba
文件 1239 2017-12-05 10:07 haha\.git\hooks\prepare-commit-msg.sample
文件 3610 2017-12-05 10:07 haha\.git\hooks\update.sample
文件 1888 2017-12-26 10:25 haha\.git\index
文件 240 2017-12-05 10:07 haha\.git\info\exclude
文件 1013 2017-12-13 10:09 haha\.git\logs\HEAD
文件 1013 2017-12-13 10:09 haha\.git\logs\refs\heads\master
文件 176 2017-12-05 10:07 haha\.git\logs\refs\remotes\origin\HEAD
文件 784 2017-12-13 10:09 haha\.git\logs\refs\remotes\origin\master
文件 119 2017-12-05 10:07 haha\.git\ob
文件 2149 2017-12-20 09:44 haha\.git\ob
文件 65 2017-12-13 10:09 haha\.git\ob
文件 521 2017-12-05 10:07 haha\.git\ob
文件 266 2017-12-13 09:26 haha\.git\ob
文件 987 2017-12-13 09:26 haha\.git\ob
文件 10484 2017-12-13 09:26 haha\.git\ob
文件 182 2017-12-13 09:27 haha\.git\ob
文件 1478 2017-12-13 09:26 haha\.git\ob
文件 15794 2017-12-13 09:26 haha\.git\ob
............此处省略402个文件信息
评论
共有 条评论