添加日志
This commit is contained in:
@@ -3,6 +3,7 @@ package com.tem.bocai.schedules;
|
||||
import com.tem.bocai.entity.LoginInfoResult;
|
||||
import com.tem.bocai.repository.LoginInfoRepository;
|
||||
import com.tem.bocai.util.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -16,6 +17,7 @@ import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class CrawlerSchedule {
|
||||
|
||||
@Autowired
|
||||
@@ -35,7 +37,7 @@ public class CrawlerSchedule {
|
||||
// 从7:00分30秒起每5分钟执行一次
|
||||
@Scheduled(cron = "30 0/5 * * * ?")
|
||||
public void executeLotteryDraw() {
|
||||
System.out.println("开始爬取开奖结果...");
|
||||
log.info("开始爬取开奖结果");
|
||||
int retryCount = 0;
|
||||
boolean success = false;
|
||||
LoginInfoResult firstByOrderByCreateTimeDesc = loginInfoRepository.findFirstByOrderByCreateTimeDesc()
|
||||
@@ -46,17 +48,15 @@ public class CrawlerSchedule {
|
||||
String token = tokenCacheService.getToken();
|
||||
|
||||
while (!success && retryCount < MAX_CRA) {
|
||||
System.out.println("\n=== 第 " + (retryCount + 1) + " 次尝试获取开奖结果 ===");
|
||||
|
||||
log.info("\n=== 第 " + (retryCount + 1) + " 次尝试获取开奖结果 ===");
|
||||
if (token == null || token.isEmpty()) {
|
||||
System.out.println("token为空,从数据库重新获取");
|
||||
log.info("token为空,从数据库重新获取");
|
||||
token = tokenCacheService.getTokenSqlite();
|
||||
if (token == null) {
|
||||
System.err.println("无法获取有效token");
|
||||
log.error("无法获取有效token");
|
||||
}
|
||||
}
|
||||
System.out.println("使用token: " + (token.length() > 20 ? token.substring(0, 20) + "..." : token));
|
||||
|
||||
log.info("使用token: " + (token.length() > 20 ? token.substring(0, 20) + "..." : token));
|
||||
// 创建爬虫实例,传入token
|
||||
LotteryWebMagicCrawler crawler = new LotteryWebMagicCrawler(token,pypath);
|
||||
|
||||
@@ -72,8 +72,7 @@ public class CrawlerSchedule {
|
||||
success = LotteryWebMagicCrawler.isLastParseSuccess();
|
||||
|
||||
if (!success) {
|
||||
System.out.println("本次尝试未解析到数据");
|
||||
|
||||
log.info("本次尝试未解析到数据");
|
||||
// 重新获取token(下次重试用)
|
||||
token = tokenCacheService.getTokenSqlite();
|
||||
retryCount++;
|
||||
@@ -87,12 +86,12 @@ public class CrawlerSchedule {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
System.out.println("成功解析到数据");
|
||||
log.info("成功解析到数据");
|
||||
}
|
||||
}
|
||||
|
||||
if (!success) {
|
||||
System.err.println("获取开奖结果失败,所有重试均未成功");
|
||||
log.error("获取开奖结果失败,所有重试均未成功");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -120,14 +119,13 @@ public class CrawlerSchedule {
|
||||
// 从7:00分30秒起每5分钟执行一次爬取今日已经结算
|
||||
@Scheduled(cron = "30 0/5 * * * ?")
|
||||
public void executeSettlement() {
|
||||
System.out.println("开始爬取今日已经结算...");
|
||||
log.info("开始爬取今日已经结算...");
|
||||
int retryCount = 0;
|
||||
boolean success = false;
|
||||
String token = tokenCacheService.getToken();
|
||||
|
||||
while (!success && retryCount < MAX_CRA) {
|
||||
System.out.println("\n=== 第 " + (retryCount + 1) + " 次尝试获取今日注单 ===");
|
||||
|
||||
log.info("\n=== 第 " + (retryCount + 1) + " 次尝试获取今日注单 ===");
|
||||
if (token == null || token.isEmpty()) {
|
||||
System.out.println("token为空,从数据库重新获取");
|
||||
token = tokenCacheService.getTokenSqlite();
|
||||
@@ -153,8 +151,7 @@ public class CrawlerSchedule {
|
||||
success = CompletedTodayCrawler.isLastParseSuccess();
|
||||
|
||||
if (!success) {
|
||||
System.out.println("本次尝试未解析到数据");
|
||||
|
||||
log.info("本次尝试未解析到数据");
|
||||
// 重新获取token(下次重试用)
|
||||
token = tokenCacheService.getTokenSqlite();
|
||||
retryCount++;
|
||||
@@ -168,12 +165,12 @@ public class CrawlerSchedule {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
System.out.println("成功解析到数据");
|
||||
log.info("成功解析到数据");
|
||||
}
|
||||
}
|
||||
|
||||
if (!success) {
|
||||
System.err.println("获取今日注单失败,所有重试均未成功");
|
||||
log.error("获取今日注单失败,所有重试均未成功");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.tem.bocai.entity.CompletedToday;
|
||||
import com.tem.bocai.repository.CompletedTodayRepository;
|
||||
import com.tem.bocai.repository.LoginInfoRepository;
|
||||
import com.tem.bocai.service.CompletedTodayService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
@@ -26,7 +27,7 @@ import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
@Slf4j
|
||||
public class CompletedTodayCrawler implements PageProcessor {
|
||||
|
||||
private final String token;
|
||||
@@ -66,36 +67,33 @@ public class CompletedTodayCrawler implements PageProcessor {
|
||||
@Override
|
||||
public void process(Page page) {
|
||||
String url = page.getUrl().toString();
|
||||
System.out.println("处理页面: " + url);
|
||||
|
||||
log.info("处理页面: " + url);
|
||||
Html html = page.getHtml();
|
||||
String content = html.toString();
|
||||
|
||||
// 打印一些基本信息
|
||||
System.out.println("页面标题: " + html.xpath("//title/text()").get());
|
||||
System.out.println("页面大小: " + content.length() + " 字符");
|
||||
|
||||
log.info("页面标题: " + html.xpath("//title/text()").get());
|
||||
// 检查是否有"暂无数据"提示
|
||||
if (content.contains("暂无数据")) {
|
||||
System.out.println("警告: 页面显示'暂无数据'");
|
||||
log.info("警告: 页面显示'暂无数据'");
|
||||
lastParseSuccess = true; // 标记失败
|
||||
return;
|
||||
}
|
||||
if (content.contains("可赢金额")) {
|
||||
System.out.println("未结明细不用爬");
|
||||
log.info("未结明细不用爬");
|
||||
lastParseSuccess = false; // 标记失败
|
||||
return;
|
||||
}
|
||||
// 解析注单数据
|
||||
List<Map<String, Object>> betList = parseBetHtml(content);
|
||||
if (betList.isEmpty()) {
|
||||
System.out.println("未解析到注单数据");
|
||||
log.info("未解析到注单数据");
|
||||
lastParseSuccess = false; // 标记失败
|
||||
// 尝试从其他可能的位置解析
|
||||
//extractDebugInfo(html);
|
||||
} else {
|
||||
lastParseSuccess = true; // 标记成功
|
||||
System.out.println("解析到 " + betList.size() + " 条注单数据");
|
||||
log.info("解析到 " + betList.size() + " 条注单数据");
|
||||
List<CompletedToday> completedTodayList = convertForDatabase(betList);
|
||||
SQLiteUtil.saveCompletedToday(completedTodayList);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.tem.bocai.util;
|
||||
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
@@ -25,6 +26,7 @@ import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
//开奖的历史结果
|
||||
@Slf4j
|
||||
public class LotteryWebMagicCrawler implements PageProcessor {
|
||||
|
||||
private final String token;
|
||||
@@ -65,12 +67,11 @@ public class LotteryWebMagicCrawler implements PageProcessor {
|
||||
Html html = page.getHtml();
|
||||
|
||||
// 打印页面基本信息
|
||||
System.out.println("页面URL: " + page.getUrl());
|
||||
System.out.println("页面标题: " + html.xpath("//title/text()").get());
|
||||
|
||||
log.info("页面URL: " + page.getUrl());
|
||||
log.info("页面标题: " + html.xpath("//title/text()").get());
|
||||
// 示例:提取所有表格数据
|
||||
Selectable tables = html.xpath("//table");
|
||||
System.out.println("找到 " + tables.nodes().size() + " 个表格");
|
||||
log.info("找到 " + tables.nodes().size() + " 个表格");
|
||||
if(tables.nodes().isEmpty()){
|
||||
lastParseSuccess = false;
|
||||
}else {
|
||||
@@ -238,7 +239,7 @@ public class LotteryWebMagicCrawler implements PageProcessor {
|
||||
SQLiteUtil.writeToSQLite(resultList);
|
||||
// 将数据写入JSON文件(保留原有功能)
|
||||
writeToJsonFile(resultList);
|
||||
System.out.println("打印结果===" + resultList);
|
||||
log.info("历史爬虫打印结果===" + resultList);
|
||||
return resultList;
|
||||
}
|
||||
|
||||
@@ -279,10 +280,10 @@ public class LotteryWebMagicCrawler implements PageProcessor {
|
||||
|
||||
// 将 List 写入 JSON 文件
|
||||
objectMapper.writeValue(outputFile, resultList);
|
||||
System.out.println("数据已成功写入文件: " + outputFile.getAbsolutePath());
|
||||
|
||||
log.info("数据已成功写入文件: " + outputFile.getAbsolutePath());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
log.error("写入 JSON 文件失败: " + e.getMessage(), e);
|
||||
throw new RuntimeException("写入 JSON 文件失败: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user