10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity上でAngleSharpを利用したスクレイピングを行う

Last updated at Posted at 2019-07-20

##自己紹介
こんにちはゆずです。@Yuzu_Unity
自分はUnityエンジニア・3DCGデザイナーの学生です。(軸はエンジニア 4年ほど…)
#はじめに
Unity上でapiを利用せずスクレイピングで色々取れないかなぁと思って
調べて動かせたのでとりあえずメモ(スクレイピングをよくわからない…)
※AngleSharpはv0.10以降かなりAPIが変わっているみたいなので他の記事はあまり参考にならないみたいです…
今回利用したのはv0.12.1です。

#今回利用するもの
VisualStudio2017

Unity2018.3以上(UniTaskを利用するため)

UniTask
https://github.com/Cysharp/UniTask

AngleSharp
https://github.com/AngleSharp/AngleSharp

AngelSharp.Js
https://github.com/AngleSharp/AngleSharp.Js

Jint
https://github.com/sebastienros/jint

#AngleSharpとは?
とりあえずC#でマルチプラットフォームにスクレイピングが行えるライブラリ
Unity対応しているらしい…
キャプチャ.PNG

#環境構築
##1.dllを手に入れる
方法は2通り
プロジェクトデータをダウンロードしビルドを行うか
パッケージマネージャーから取得するかです。
後者のほうが簡単です。
今回は
AngleSharp.dll
AngelSharp.Js.dll (Jsを有効にするため)
Jint.dll (AngelSharp.Jsを使う際必須)
をインポートしました。

Assets/Plugins内に配置します
(その他UniTaskをインポート&設定)

##使い方

パース方法2種類あるそうです
名前空間が過去バージョンよりかなり変わっています。

    using UniRx.Async;
    using AngleSharp.Html.Parser;
    using AngleSharp.Html.Dom;
    using System.Net.Http;

    async UniTask<IHtmlDocument> Parce()
    {
        var parser = new HtmlParser();
        using (var client = new HttpClient())
        using (var stream = await client.GetStreamAsync(new Uri(uri)))
        {
            return await parser.ParseDocumentAsync(stream);
        }
    }
   using UniRx.Async;
   using AngleSharp;
   using AngleSharp.Dom;

   async UniTask<IDocument> Parce()
    {
        // WithJs()で、JavaScriptを有効 動作してるか不明
        var config = Configuration.Default.WithDefaultLoader().WithJs();
        var context = BrowsingContext.New(config);
        return await context.OpenAsync(uri);
    }

その他使いかた等は…
https://qiita.com/NekozeDaisensei/items/c74f71e5d79d6de05841

##とりあえずGitHubにテストデータ上げてみました...
https://github.com/yuzu-unity/UnityAngleSharpScraping

ツイッターURLをスクレイピング
image.png

#余談
使い道が特にないが…
Unity上でも動くということが確認できたのでよしとする…
自分はスクレイピングについて知らないため、いろいろテストしてほしい…

10
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?