Skip to content

Commit 67644de

Browse files
committed
Expose Page to onSuccess & onError.
1 parent eda3be9 commit 67644de

File tree

5 files changed

+67
-12
lines changed

5 files changed

+67
-12
lines changed

webmagic-core/src/main/java/us/codecraft/webmagic/Page.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,27 @@ public class Page {
5656
public Page() {
5757
}
5858

59-
public static Page fail(){
59+
/**
60+
* Returns a {@link Page} with {@link #downloadSuccess} is {@code false}.
61+
*
62+
* @return the page.
63+
* @deprecated Use {@link #fail(Request)} instead.
64+
*/
65+
@Deprecated
66+
public static Page fail() {
67+
return fail(null);
68+
}
69+
70+
/**
71+
* Returns a {@link Page} with {@link #downloadSuccess} is {@code false},
72+
* and {@link #request} is specified.
73+
*
74+
* @return the page.
75+
* @since 0.10.0
76+
*/
77+
public static Page fail(Request request){
6078
Page page = new Page();
79+
page.setRequest(request);
6180
page.setDownloadSuccess(false);
6281
return page;
6382
}

webmagic-core/src/main/java/us/codecraft/webmagic/downloader/AbstractDownloader.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,26 +36,62 @@ public Html download(String url, String charset) {
3636
return (Html) page.getHtml();
3737
}
3838

39+
/**
40+
* @param request the {@link Request}.
41+
* @deprecated Use {@link #onSuccess(Page, Task)} instead.
42+
*/
3943
@Deprecated
4044
protected void onSuccess(Request request) {
4145
}
4246

4347
/**
48+
* @param request the {@link Request}.
49+
* @param task the {@link Task}.
4450
* @since 0.7.6
51+
* @deprecated Use {@link #onSuccess(Page, Task)} instead.
4552
*/
53+
@Deprecated
4654
protected void onSuccess(Request request, Task task) {
4755
this.onSuccess(request);
4856
}
4957

58+
/**
59+
* @param page the {@link Page}.
60+
* @param task the {@link Task}.
61+
* @since 0.10.0
62+
*/
63+
protected void onSuccess(Page page, Task task) {
64+
this.onSuccess(page.getRequest(), task);
65+
}
66+
67+
/**
68+
* @param request the {@link Request}.
69+
* @deprecated Use {@link #onError(Page, Task, Throwable)} instead.
70+
*/
5071
@Deprecated
5172
protected void onError(Request request) {
5273
}
5374

5475
/**
76+
* @param request the {@link Request}.
77+
* @param task the {@link Task}.
78+
* @param e the exception.
5579
* @since 0.7.6
80+
* @deprecated Use {@link #onError(Page, Task, Throwable)} instead.
5681
*/
82+
@Deprecated
5783
protected void onError(Request request, Task task, Throwable e) {
5884
this.onError(request);
5985
}
6086

87+
/**
88+
* @param page the {@link Page}.
89+
* @param task the {@link Task}.
90+
* @param e the exception.
91+
* @since 0.10.0
92+
*/
93+
protected void onError(Page page, Task task, Throwable e) {
94+
this.onError(page.getRequest(), task, e);
95+
}
96+
6197
}

webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpClientDownloader.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,19 +79,19 @@ public Page download(Request request, Task task) {
7979
CloseableHttpClient httpClient = getHttpClient(task.getSite());
8080
Proxy proxy = proxyProvider != null ? proxyProvider.getProxy(request, task) : null;
8181
HttpClientRequestContext requestContext = httpUriRequestConverter.convert(request, task.getSite(), proxy);
82-
Page page = Page.fail();
82+
Page page = Page.fail(request);
8383
try {
8484
httpResponse = httpClient.execute(requestContext.getHttpUriRequest(), requestContext.getHttpClientContext());
8585
page = handleResponse(request, request.getCharset() != null ? request.getCharset() : task.getSite().getCharset(), httpResponse, task);
8686

87-
onSuccess(request, task);
88-
logger.info("download page success {}", request.getUrl());
87+
onSuccess(page, task);
88+
logger.info("downloading page success {}", request.getUrl());
8989

9090
return page;
9191
} catch (IOException e) {
9292

93-
onError(request, task, e);
94-
logger.info("download page error {}", request.getUrl(), e);
93+
onError(page, task, e);
94+
logger.info("download page {} error", request.getUrl(), e);
9595

9696
return page;
9797
} finally {

webmagic-extension/src/main/java/us/codecraft/webmagic/downloader/PhantomJSDownloader.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public Page download(Request request, Task task) {
8888
logger.info("downloading page: " + request.getUrl());
8989
}
9090

91-
Page page = Page.fail();
91+
Page page = Page.fail(request);
9292
try {
9393
String content = getPage(request);
9494
if (!content.contains("HTTP request failed")) {
@@ -98,9 +98,9 @@ public Page download(Request request, Task task) {
9898
page.setRequest(request);
9999
page.setStatusCode(200);
100100
}
101-
onSuccess(request, task);
101+
onSuccess(page, task);
102102
} catch (Exception e) {
103-
onError(request, task, e);
103+
onError(page, task, e);
104104
logger.warn("download page {} error", request.getUrl(), e);
105105
}
106106
return page;

webmagic-selenium/src/main/java/us/codecraft/webmagic/downloader/selenium/SeleniumDownloader.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public SeleniumDownloader setSleepTime(int sleepTime) {
7474
public Page download(Request request, Task task) {
7575
checkInit();
7676
WebDriver webDriver = null;
77-
Page page = Page.fail();
77+
Page page = Page.fail(request);
7878
try {
7979
webDriver = webDriverPool.get();
8080

@@ -111,10 +111,10 @@ public Page download(Request request, Task task) {
111111
page.setHtml(new Html(content, request.getUrl()));
112112
page.setUrl(new PlainText(request.getUrl()));
113113
page.setRequest(request);
114-
onSuccess(request, task);
114+
onSuccess(page, task);
115115
} catch (Exception e) {
116116
logger.warn("download page {} error", request.getUrl(), e);
117-
onError(request, task, e);
117+
onError(page, task, e);
118118
} finally {
119119
if (webDriver != null) {
120120
webDriverPool.returnToPool(webDriver);

0 commit comments

Comments
 (0)