Jsoup抓取整个网站


使用jsoup,抓取整个网站,保存在本地。包括网站的“css、js、图片、页面”,都会保存在本地。并且保存的路径痛网站上的路径。经过测试,一般的基础网站都可以抓取。
资源截图
代码片段和文件信息
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.gitCOMMIT_EDITMSG

     文件        321  2017-12-05 10:07  haha.gitconfig

     文件         73  2017-12-05 10:07  haha.gitdescription

     文件         89  2017-12-13 10:16  haha.gitFETCH_HEAD

     文件         23  2017-12-05 10:07  haha.gitHEAD

     文件        478  2017-12-05 10:07  haha.githooksapplypatch-msg.sample

     文件        896  2017-12-05 10:07  haha.githookscommit-msg.sample

     文件        189  2017-12-05 10:07  haha.githookspost-update.sample

     文件        424  2017-12-05 10:07  haha.githookspre-applypatch.sample

     文件       1642  2017-12-05 10:07  haha.githookspre-commit.sample

     文件       1348  2017-12-05 10:07  haha.githookspre-push.sample

     文件       4951  2017-12-05 10:07  haha.githookspre-rebase.sample

     文件       1239  2017-12-05 10:07  haha.githooksprepare-commit-msg.sample

     文件       3610  2017-12-05 10:07  haha.githooksupdate.sample

     文件       1888  2017-12-26 10:25  haha.gitindex

     文件        240  2017-12-05 10:07  haha.gitinfoexclude

     文件       1013  2017-12-13 10:09  haha.gitlogsHEAD

     文件       1013  2017-12-13 10:09  haha.gitlogs
efsheadsmaster

     文件        176  2017-12-05 10:07  haha.gitlogs
efs
emotesoriginHEAD

     文件        784  2017-12-13 10:09  haha.gitlogs
efs
emotesoriginmaster

     文件        119  2017-12-05 10:07  haha.gitobjects056a658c14ce9b6665b9d92864145109fdbe623

     文件       2149  2017-12-20 09:44  haha.gitobjects086e5780143a92e4910d9d3e567f7013035ec74

     文件         65  2017-12-13 10:09  haha.gitobjects193c2673203020e3726e397a6870107f9e38aa9

     文件        521  2017-12-05 10:07  haha.gitobjects4fa92d24d70315d66797bf126b61ba2731b0411

     文件        266  2017-12-13 09:26  haha.gitobjects6d8b0fef21e1f6a7ab4210217b0428f33aecc84

     文件        987  2017-12-13 09:26  haha.gitobjects856bbc012e6df8b5c49c9642f0b02e3e75c358f

     文件      10484  2017-12-13 09:26  haha.gitobjectsd545b98739ec69d5b04fb244df18bd1ec762f62

     文件        182  2017-12-13 09:27  haha.gitobjectse14a2a0223fa5ec422ade6d9a7804769dc06939

     文件       1478  2017-12-13 09:26  haha.gitobjects14451bd2293d2f0774b40d48de0e666f69a37621

     文件      15794  2017-12-13 09:26  haha.gitobjects1448095eb6c3cc24a04d8390c7c68856dcd5bdf1

............此处省略402个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)