Java實現網路爬蟲 案例程式碼

新夢想IT發表於2022-11-22

Java實現網路爬蟲 案例程式碼4:使用webmagic框架從網上獲取《三國演義》全文



需求說明


搭建開發環境,實現《三國演義》全文儲存在本地




步驟分析


訪問網址:


分析網站URL、文件內容特徵


獲取網頁內容


拆分出需求內容


儲存在本地




案例程式碼


import us.codecraft.webmagic.Page;

import us.codecraft.webmagic.Site;

import us.codecraft.webmagic.Spider;

import us.codecraft.webmagic.pipeline.ConsolePipeline;

import us.codecraft.webmagic.pipeline.FilePipeline;

import us.codecraft.webmagic.pipeline.JsonFilePipeline;

import us.codecraft.webmagic.processor.PageProcessor;


public class NovelRepoPageProcessor implements PageProcessor {

    // 部分一:抓取網站的相關配置,包括編碼、抓取間隔、重試次數等

    private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);


    @Override

    // process是定製爬蟲邏輯的核心介面,在這裡編寫抽取邏輯

    public void process(Page page) {

        // 部分二:定義如何抽取頁面資訊,並儲存下來 

        page.putField("id", page.getUrl().

        regex("\\.shicimingju\\.com/book/sanguoyanyi/(\\d+)\\.html").toString());

        page.putField("name", 

            page.getHtml().xpath("//h1/text()").toString());

        if (page.getResultItems().get("name") == null) {

            //skip this page

            page.setSkip(true);

        }

        //<div class="chapter_content">

        page.putField("content", 

        page.getHtml().xpath("//div[@class='chapter_content']/tidyText()"));


        // 部分三:從頁面發現後續的url地址來抓取

        page.addTargetRequests(page.getHtml().links().

                regex("(\\.shicimingju\\.com/book/sanguoyanyi/(\\d+)\\.html)").all());

    }


    @Override

    public Site getSite() {

        return site;

    }


    public static void main(String[] args) {


        Spider.create(new NovelRepoPageProcessor())

                //從""開始抓

                .addUrl("")

                .addPipeline(new JsonFilePipeline("D:\\webmagic\\"))  //JSON格式儲存結果到檔案

                //開啟5個執行緒抓取

                .thread(5)

                //啟動爬蟲

                .run();

    }

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2924582/,如需轉載,請註明出處,否則將追究法律責任。

相關文章