这个篇呢,我们主要说这个Page 对象,使用过webmagic 的人呢,都知道Page对象呢。是在download里面产生,是根据发送请求,而接收到的参数,而进行拼接的一个对象。这个对象呢,是经过一系列封装的,而如果,你想要是用webmagic 这个框架呢,Page 这个对象就是你永远逃不掉的一个!
![](https://img.haomeiwen.com/i10912753/e5c2572bc18b96ad.png)
他在源码中所处的呢,是一个这样子的位置!
private Requestrequest;//每一个页面,是由那个Request产生的
private ResultItems resultItems =new ResultItems();//每个页面,你所解析出来的数据
private Html html;//这个页面里面的html
private Json json;//这个页面的json 备注: 不是说,会把html里面的json单数抽出来,而是说,如果你请求的是一个html页面的话,你就应该从html连获取,而如果你请求的是一个接口的话,你就应该从这个里面解析你想要的数据
private String rawText;//整个页面的文本档案
private Selectable url;//url地址
private Map> headers;//http协议
private int statusCode = HttpConstant.StatusCode.CODE_200;// 页面返回状态码,默认是200
private boolean downloadSuccess =true;//页面是否下载成功
private byte [] bytes;//页面字节(响应流)
private List targetRequests =new ArrayList();//有时候呢,如果你是发送多个请求才能拿到一个页面,这个或许就有点用处了!
private String charset;//页面的编码格式
上面呢,就是我对Page对象的一些参数的自己理解!
public Page() {//Page对象的构造方法,证明new Page() 是可以的
public static Page fail(){//这个方法呢,也是获取一个Page,唯一跟new的区别呢,里面把downloadSuccseeful 这个属性,设置为失败了! 个人建议,各位在重写download,等一系列等需要创建Page时,使用这个方法!
public Page setSkip(boolean skip) {// 设置是否跳过,适用于多个请求才能拼接成一个页面的情况
public Html getHtml() {//获取页面的html
public Json getJson() {//获取页面的json
public void setHtml(Html html) {//设置页面的html
public List getTargetRequests() {//获取请求
public void addTargetRequests(List requests) {//将一个list 重新加入队列
public void addTargetRequests(List requests, long priority) { //将一个list 重新加入队列,并设置优先度
public void addTargetRequest(String requestString) {//单独加入url到队列
public void addTargetRequest(Request request) {//单独加入request
public Selectable getUrl() {//获取url
public void setUrl(Selectable url) {//设置URl
public Request getRequest() {//获取请求参数
public void setRequest(Request request) {//设置请求
public ResultItems getResultItems() {//获取拿到的参数
public int getStatusCode() {//获取请求的status
public void setStatusCode(int statusCode) {//设置请求的status
public String getRawText() {//获取请求的原始文案
public Page setRawText(String rawText) {//设置原始文案
public Map getHeaders() {//获取http协议
public void setHeaders(Map> headers) {//设置http协议
public boolean isDownloadSuccess() {//页面是否下载成功
public void setDownloadSuccess(boolean downloadSuccess) {//设置页面是否下载成功
public byte[] getBytes() {//获取字节
public void setBytes(byte[] bytes) {//设置字节
public String getCharset() {//获取页面的编码格式
public void setCharset(String charset) {//设置页面的编码格式
public StringtoString() {//toString()
在这里呢,我私人的建议由两个,第一个就是在获取页面的时候,调用fail() 方法
第二个呢,就是当你为Page设置json(Html)的时候呢,你可以使用setRawText() 方法,这样子,当你获取json,或者html,他会自己进行判断的,可以省去一点时间,另外rawTets,貌似是不可以为空的!!!!
上面呢,就是webmagic框架的Page对象了,如果有什么疑问的话,可以找我!
https://blog.csdn.net/qq_36783371 一个大佬写的博客,欢迎去砸鸡蛋!
网友评论