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ブラウザのチェック要素によって、最初のニーズ、および: