子任务可以使用不同的下载器。。。

master
itranlin 2020-12-19 17:59:52 +08:00
parent 4b902270b4
commit fc7ae9ce28
2 changed files with 20 additions and 1 deletions

View File

@ -1,5 +1,6 @@
package us.codecraft.webmagic; package us.codecraft.webmagic;
import us.codecraft.webmagic.downloader.Downloader;
import us.codecraft.webmagic.model.HttpRequestBody; import us.codecraft.webmagic.model.HttpRequestBody;
import us.codecraft.webmagic.utils.Experimental; import us.codecraft.webmagic.utils.Experimental;
@ -26,6 +27,11 @@ public class Request implements Serializable {
private HttpRequestBody requestBody; private HttpRequestBody requestBody;
/**
* this req use this downloader
*/
private Downloader downloader;
/** /**
* Store additional information in extras. * Store additional information in extras.
*/ */
@ -175,6 +181,14 @@ public class Request implements Serializable {
return binaryContent; return binaryContent;
} }
public Downloader getDownloader() {
return downloader;
}
public void setDownloader(Downloader downloader) {
this.downloader = downloader;
}
public Request setBinaryContent(boolean binaryContent) { public Request setBinaryContent(boolean binaryContent) {
this.binaryContent = binaryContent; this.binaryContent = binaryContent;
return this; return this;

View File

@ -401,7 +401,12 @@ public class Spider implements Runnable, Task {
} }
private void processRequest(Request request) { private void processRequest(Request request) {
Page page = downloader.download(request, this); Page page;
if (null != request.getDownloader()){
page = request.getDownloader().download(request,this);
}else {
page = downloader.download(request, this);
}
if (page.isDownloadSuccess()){ if (page.isDownloadSuccess()){
onDownloadSuccess(request, page); onDownloadSuccess(request, page);
} else { } else {