# 网页下载器
网页下载器的作用是根据资源调度器的调度将互联网上网页资源下载下来。
# 简单使用
网页下载器的定义如下
/**
* 网页下载器<br/>
* 负责根据下载请求任务从指定的网站下载数据
*
* @author yishui
* @date 2019年11月20日
* @version 1.0.0
*/
public interface Downloader {
/**
* 下载对应的请求资源
*
* @param request 当前的下载请求
* @return 网页对象
* @throws ServiceException
*/
Page down(final Request request) throws ServiceException;
/**
* 关闭下载器以释放资源
*/
void close();
}
风铃虫目前内置的网页下载器有:
- Jsoup下载器
- selenium下载器
风铃虫默认使用的基于Jsoup (opens new window)实现的简单下载器,该下载器具备的功能有:
- 支持下载HTTP和HTTPS网页
- 支持设置请求头
- 支持设置cookie
- 智能调整请求头信息
- 智能调整cookie信息
- 智能设置网页来源信息
- ....
selenium下载器 是基于selenium实现的,它目前最大的特性是:
- 支持下载HTTP和HTTPS网页
- 智能调整cookie信息
- 支持下载js渲染的网站
- 支持动态设置等待渲染时间
在抓取js渲染的网站时,请使用 selenium下载器 (opens new window)
# 高级使用
一般来说,简单下载器就能完成绝大部分网页的下载要求,但是对于某些特殊的下载要求,如需要对前端进行渲染的下载请求,用户可以使用自定义请求下载器。
1 实现自定义请求下载器
public class HttpClientDownloader implements Downloader {
@Override
public Page down(final Request request) {
//实现代码
return page;
}
@Override
public void close(){}
}
2 将自定义下载器应用到风铃虫
Crawler crawler = ....
crawler.setDownloader(new HttpClientDownloader())