Skip to content

Commit ded8c9b

Browse files
committed
change relation between url and pattern
1 parent 5d99f27 commit ded8c9b

File tree

2 files changed

+34
-25
lines changed

2 files changed

+34
-25
lines changed

src/main/java/scheduler/DispatchScheduler.java

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ public class DispatchScheduler implements Scheduler {
1616
private static final String getProblemLinkPath = "//table[@class='table table-striped table-centered']/tbody/tr/td/a/text()"; //得到题目名称Xpath路径
1717
private static final String submissionLinkPath = "//div[@class='row']/div/div/a/@href"; //进入题目提交页面Xpath路径
1818
private static final String codePagePath = "//table[@id='result_testcases']/tbody/tr/td/a/@href"; //进入题目代码页面Xpath路径
19-
private static final String codePageStatusPath = "//table[@id='result_testcases]/t"
20-
+ "body/tr/td/a[@class='status-accepted text-success']/strong/text()"; //题目提交状态Xpath路径
19+
// private static final String codePageStatusPath = "//table[@id='result_testcases]/t"
20+
// + "body/tr/td/a[@class='status-accepted text-success']/strong/text()"; //题目提交状态Xpath路径
21+
// private static final String codePageStatusPath = "//div[@class='row']/div/div/a/@href";
22+
private static final String codePageStatusPath = "//a[@class='text-danger status-accepted']/@href";
2123
private Logger myLog;
2224
/**
2325
*
@@ -35,7 +37,7 @@ public void startProcess() {
3537
try {
3638
myLog.debug("进入startProcess,试图初始化task queue");
3739
List<String> list = downloader.problemListDownloader(problemLinkPath);
38-
setTask(list);
40+
setTask(list, null);
3941
} catch (InterruptedException e) {
4042
e.printStackTrace();
4143
}
@@ -77,19 +79,16 @@ public void taskProcceed() {
7779
* @since 1.0.0
7880
*/
7981
public void getDownloadResult(ParserTask task) throws InterruptedException {
80-
if (task.getType() == ParserTask.TaskType.GET_SUBMISION_URL) {
81-
myLog.debug("正在获取问题提交列表url");
82-
List<String> list = downloader.problemDescriptionDownloader(task.getUrl(), submissionLinkPath);
83-
setTask(list);
84-
} else if (task.getType() == ParserTask.TaskType.GET_CODE_URL) {
85-
myLog.debug("正在获取代码页面url");
86-
List<String> list = downloader.submissionListDownloader(task.getUrl(), codePagePath);
87-
setTask(list);
88-
} else if (task.getType() == ParserTask.TaskType.GET_CODE) {
89-
myLog.debug("正在获取代码");
90-
//do something to get code
82+
if (task.getType().equals(ParserTask.TaskType.SUBMISION_URL)) {
83+
myLog.debug("该任务为获取问题代码");
84+
List<String> list = downloader.problemDescriptionDownloader(task.getUrl(), codePageStatusPath);
85+
setTask(list, task.getType());
86+
} else if (task.getType().equals(ParserTask.TaskType.CODE_PAGE_URL)) {
87+
//获取代码
9188
} else {
92-
System.out.println("无法识别该url,请填写正确的url。");
89+
myLog.debug("正在获取问题提交列表,url为: " + task.getUrl());
90+
List<String> list = downloader.problemDescriptionDownloader(task.getUrl(), submissionLinkPath);
91+
setTask(list, task.getType());
9392
}
9493
}
9594

@@ -102,10 +101,18 @@ public void getDownloadResult(ParserTask task) throws InterruptedException {
102101
* @exception
103102
* @since 1.0.0
104103
*/
105-
public void setTask(List<String> list) throws InterruptedException {
104+
public void setTask(List<String> list, ParserTask.TaskType type) throws InterruptedException {
105+
if (list.size() == 0) return;
106+
if (type != null && type.equals(ParserTask.TaskType.SUBMISION_URL)) {
107+
ParserTask task = new ParserTask(new StringBuilder("https://leetcode.com").append(list.get(0)).toString());
108+
myLog.debug("正在进行入栈操作,task的url为: " + task.getUrl());
109+
task.isType();
110+
queue.put(task);
111+
return;
112+
}
106113
for (String value: list) {
107114
ParserTask task = new ParserTask(new StringBuilder("https://leetcode.com").append(value).toString());
108-
myLog.debug("task的url为: " + task.getUrl());
115+
myLog.debug("正在进行入栈操作,task的url为: " + task.getUrl());
109116
task.isType();
110117
queue.put(task);
111118
}

src/main/java/scheduler/ParserTask.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class ParserTask implements Comparable<ParserTask>{
1010
private static final String submissionListURL = ".*/submissions/$"; // 检验是否是题目提交列表页面
1111
private static final String problemCodeURL = ".*/submissions/detail/.*"; // 检验是否是题目代码页面
1212
private static final String problemListURL = ".*/problemset/algorithms/$"; // 检验是否是题目列表页面
13+
private static final String problemDescription = ".*/problems/.*";
1314
private Logger myLog;
1415

1516
/**
@@ -21,7 +22,7 @@ public class ParserTask implements Comparable<ParserTask>{
2122
*
2223
*/
2324
static enum TaskType {
24-
GET_PROBLEM_LIST_URL, GET_SUBMISION_URL, GET_CODE_URL, GET_CODE
25+
PROBLEM_URL, SUBMISION_URL, CODE_PAGE_URL
2526
}
2627

2728
private String url;
@@ -71,14 +72,15 @@ public TaskType getType() {
7172
* @since 1.0.0
7273
*/
7374
public void isType() {
74-
if (checkPattern(url, problemListURL)) {
75-
type = TaskType.GET_PROBLEM_LIST_URL;
75+
if (checkPattern(url, submissionListURL)) {
76+
myLog.debug("设定task类型为SUBMISION_URL");
77+
type = TaskType.SUBMISION_URL;
7678
} else if (checkPattern(url, problemCodeURL)) {
77-
type = TaskType.GET_CODE_URL;
78-
} else if (checkPattern(url, submissionListURL)) {
79-
type = TaskType.GET_SUBMISION_URL;
79+
myLog.debug("设定task类型为CODE_PAGE_URL");
80+
type = TaskType.CODE_PAGE_URL;
8081
} else {
81-
type = TaskType.GET_CODE;
82+
myLog.debug("设定task类型为PROBLEM_URL");
83+
type = TaskType.PROBLEM_URL;
8284
}
8385
}
8486

@@ -103,6 +105,6 @@ public boolean checkPattern(String url, String patternString) {
103105
* 复写Comparable接口方法
104106
*/
105107
public int compareTo(ParserTask o) {
106-
return o.type.ordinal()-this.type.ordinal();
108+
return this.type.ordinal()-o.type.ordinal();
107109
}
108110
}

0 commit comments

Comments
 (0)