java 爬蟲 WebMagic(二)-PageProcessor


PageProcessor是WebMagic中最重要的一個,它用來編寫爬取的規則,爬什么?怎么爬?

首先PageProcessor是一個接口,具體實現需要集成這個接口,重寫它的process

例如:

public class MyProcesser implements PageProcessor {

    private Site site = Site.me().setTimeOut(10000).setRetryTimes(10).setCycleRetryTimes(10).setSleepTime(1000).setRetrySleepTime(3000).setCharset("UTF-8");
@Override public void process(Page page) {
   //方式一:獲取Json Json json= page.getJson();
   String jsonStr=json.jsonPath("$.a.b.c")All();
   //方式二: 獲取document
   
Document document = page.getHtml().getDocument();
   String text = document.getElementById("id").text();
   ......
   //將新的連接加入爬取隊列
   page.addTargetRequest(request);
   //將抓取數據發送到Pipeline, key-value結構
   page.putField("key",value);
   }

@Override
public Site getSite() {
     //設置Header,cookie等Requset頭部。 site.setUserAgent(
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3738.400"); site.addHeader("accpet","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); site.addCookie("cookie2","15f21e08ce7d25e0551f6c74e460a3d3");
      return site; } }

site這個對象必須要有,不然會報錯,它封裝了爬取的配置如:

setTimeOut(1000)  表示請求timeOut時,1秒后重試;

setSleepTime(1000)  表示每次請求間隔1秒;

以及設置Header,cookie等信息;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM