WebMagic Javaフレームワークの爬虫類

I.はじめに

WebMagicは、シンプルで柔軟なJavaフレームワークの爬虫類です。基づきWebMagicは、あなたはすぐにクローラーを維持するために簡単に、高効率を開発することができます。

第二に、どのように学ぶために

公式サイトをチェックしてください1.

公式ウェブサイトのアドレスは次のとおりです。http://webmagic.io/
公式サイト詳細なドキュメント:http://webmagic.io/docs/zh/

ハローワールド例を走る2(参照がブログであってもよいし、特に公式ホームページを参照してください)

私はHello Worldの例として、以下のユニットテストケースを書きました。

輸入依存する必要性に注意をMavenの:

<依存性> 
    <のgroupId> us.codecraft </のgroupId> 
    <たartifactId> webmagicコア</たartifactId> 
    <バージョン> 0.7.3 </バージョン> 
</依存> 
<依存性> 
    <のgroupId> us.codecraft </のgroupId> 
    <たartifactId> webmagic拡張</たartifactId> 
    <バージョン> 0.7.3 </バージョン> 
</依存>

  

オブジェクト3.

私の目的についての話は、私は最近、サードパーティ製のプラグインをインポートするブログを持っているブログシステムを開発し、これは簡単なプラグインの検索ボックスで、検索ボックス内の対応するURLで塗りつぶしは、あなた自身のブログに、[検索]をクリックします。

一例として、輸入ブログパーク単一の記事へ:

ここでは(単一記事紹介は、私は1つのツールクラスにパッケージ化している)私のソースコードは次のとおりです。

輸入cn.hutool.core.date.DateUtil; 
輸入com.blog.springboot.dto.CnBlogModelDTO; 
輸入com.blog.springboot.entity.Posts。
輸入com.blog.springboot.service.PostsService。
輸入org.springframework.beans.factory.annotation.Autowired; 
輸入org.springframework.stereotype.Component; 
輸入us.codecraft.webmagic.Page; 
輸入us.codecraft.webmagic.Site; 
輸入us.codecraft.webmagic.Spider; 
輸入us.codecraft.webmagic.pipeline.ConsolePipeline; 
輸入us.codecraft.webmagic.processor.PageProcessor; 
輸入us.codecraft.webmagic.selector.Selectable; 
輸入javax.annotation.PostConstruct; 


/ * * 
 *导入博客园文章工具类
 * / 
@Component
パブリック クラスWebMagicCnBlogUtils実装PageProcessor { 

    @Autowired 
    プライベートPostsService postService。


    パブリック 静的WebMagicCnBlogUtilsのmagicCnBlogUtils。

    @PostConstruct 
    公共 ボイドのinit(){ 
        magicCnBlogUtils = この; 
        magicCnBlogUtils.postServiceは = この.postServiceを。
    } 
    プライベートサイトサイト= Site.me()
            .setDomain(" https://www.cnblogs.com/ " 
            .setSleepTime(1000年
            .setUserAgent(" Mozillaの/ 5.0(Windows NTの10.0; Win64の、x64)のクローム/ 67.0.3396.99サファリ/ 537.36のAppleWebKit / 537.36(ヤモリのようにKHTML、)" ); 


    @Override 
    公共 のボイドのプロセス(ページページ){ 


        選択OBJ = page.getHtml()のxpath(。" // divの[クラス@ = 'ポスト'] " ); 
        選択可能なタイトル = obj.xpath(" // H1 [クラス@ = 'postTitle'] // A " ); 
        選択可能なコンテンツ = obj.xpath(" // divの[クラス@ = 'ブログ投稿-体'] " ); 
        システム。アウト .println(" タイトル:"" <[^>] *> " "" )); 
        システム。アウト .println(" 内容:" + コンテンツ)。
        CnBlogModelDTOブログ = 新しいCnBlogModelDTO(); 
        blog.setTitle(title.toString())。
        blog.setContent(content.toString())。

        投稿は、投稿 = 新しい)(投稿; 

        文字列日付 = 。DateUtil.date()のtoString(); 
        post.setPostAuthor(1L )。
        post.setPostTitle(title.replace(" <[^>] *> " "").toString()); 
        post.setPostContent(content.toString())。
        post.setPostExcerpt(content.replace(" <[^>] *> " "" ).toString()); 
        post.setPostDate(日付); 
        post.setPostDate(日付); 
        post.setPostModified(日付); 
        ブールimportPost = magicCnBlogUtils.postService.insert(POST)。

        もし(importPost){ 
            システム。アウト .println(" 成功" ); 
        } { 
            システム。 .println(不合格); 
        } 


    } 

    @Override 
    公共サイトGetSite(){
         リターンサイト; 
    } 


    / * * 
     *単品のブログ記事データ公園のインポート
     * 
     * @param URL 
     * / 
    パブリック 静的な 無効importSinglePost(文字列のURL){ 
        Spider.create(新新WebMagicCnBlogUtils( ))
                .addUrl(URL)
                .addPipeline(新しい新しいConsolePipeline())
                .RUN(); 

    } 
}

ユニットテストコード:

輸入com.blog.springboot.dto.CnBlogModelDTO; 
輸入us.codecraft.webmagic.Page; 
輸入us.codecraft.webmagic.Site; 
輸入us.codecraft.webmagic.Spider; 
輸入us.codecraft.webmagic.pipeline.ConsolePipeline; 
輸入us.codecraft.webmagic.processor.PageProcessor; 
輸入us.codecraft.webmagic.selector.Selectable; 



パブリック クラスWebMagicJunitTest実装PageProcessor {
     プライベートサイトサイト= Site.me()
            .setDomain(" https://www.cnblogs.com/ " 
            .setSleepTime(1000 
            .setUserAgent("Mozillaの/ 5.0(Windows NTの10.0; Win64の、x64)のクローム/ 67.0.3396.99サファリ/ 537.36のAppleWebKit / 537.36(ヤモリのようにKHTML、)" ); 


    @Override 
    公共 無効プロセス(ページページ){ 


        選択OBJ = page.getHtml() .xpath(" // divの[クラス@ = 'ポスト'] " ); 
        選択可能なタイトル = obj.xpath(" // H1 [クラス@ = 'postTitle'] // A " ); 
        選択可能なコンテンツ = obj.xpath(" // divの[クラス@ = 'ブログ投稿-体'] " ); 

        。システムのうち .println(" タイトル:" +タイトル。(置き換えます"<[^>] *> " "" )); 
        システム。アウト .println(" 内容:" + コンテンツ); 


    } 

    @Override 
    公共サイトgetSite(){
         リターンサイト; 
    } 


    公共の 静的な 無効importSinglePost(文字列のURL){ 
        Spider.create(新しいWebMagicJunitTest())
                .addUrl(URL)
                .addPipeline(新しいConsolePipeline())
                .RUN(); 
    } 
    公共の 静的な 無効メイン(文字列[]引数){

        WebMagicJunitTest.importSinglePost(" https://www.cnblogs.com/youcong/p/9404007.html " ); 
    }

?また、私は、データがそれをクロールする方法が何であるかを知っている
として、クロムまたはFirefoxブラウザのチェック要素によって、最初のニーズ、および:

 

おすすめ

転載: www.cnblogs.com/youcong/p/12293233.html