Unity上でAngleSharpを利用したスクレイピングを行う
自己紹介
こんにちはゆずです。@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対応しているらしい…
環境構築
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にテストデータ上げてみました...
余談
使い道が特にないが…
Unity上でも動くということが確認できたのでよしとする…
自分はスクレイピングについて知らないため、いろいろテストしてほしい…
Author And Source
この問題について(Unity上でAngleSharpを利用したスクレイピングを行う), 我々は、より多くの情報をここで見つけました https://qiita.com/Yuzu_Unity/items/48d00f2a4779f360d2de著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .