ScraperService.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package top.lvzhiqiang.service;
  2. import java.io.File;
  3. import org.jsoup.nodes.Document;
  4. import org.springframework.boot.system.ApplicationHome;
  5. /**
  6. * 通用接口,以后你要加 JavBus、JavLibrary,直接扩展这个接口即可
  7. *
  8. * @author: lvzhiqiang
  9. * @date: 2026/2/11 13:54
  10. */
  11. public interface ScraperService {
  12. /**
  13. * 获取支持的类型,如 javdb
  14. *
  15. * @return: java.lang.String
  16. * @author: lvzhiqiang
  17. * @date: 2026/2/11 15:45
  18. */
  19. String getServiceType();
  20. /**
  21. * 【核心方法】获取页面源码 (带 Session 检查机制)
  22. * 所有的业务抓取都要调用这个方法,不要直接用 page.navigate
  23. *
  24. * @return: org.jsoup.nodes.Document
  25. * @author: lvzhiqiang
  26. * @date: 2026/2/11 15:45
  27. */
  28. Document getPageDocumentSecurely(String targetUrl);
  29. /**
  30. * 获取项目根目录的通用方法
  31. *
  32. * @return: java.io.File
  33. * @author: lvzhiqiang
  34. * @date: 2026/2/12 11:21
  35. */
  36. default File getAppRootPath() {
  37. ApplicationHome home = new ApplicationHome(getClass());
  38. File source = home.getSource();
  39. // 如果 source 不为空,说明是在 Jar 包里运行,返回 Jar 包同级目录
  40. if (source != null) {
  41. return source.getParentFile();
  42. }
  43. // 如果 source 为空,说明是在 IDE 或 测试环境运行
  44. // 此时返回项目的根目录 (也就是 System.getProperty("user.dir"))
  45. return new File(System.getProperty("user.dir"));
  46. }
  47. }