LoginSignup
5
4

More than 3 years have passed since last update.

Xamarinで作る iOS, Android で動作するクローラー

Posted at

スマートフォン上で動くクローラーを iOS, Android 両対応でお手軽に作れないか調べたところ、XamarinでC#を使って書くのが一番よさそうなのでやってみました。

Webページをとってくるのみなら HttpClient でも良いのですが、スクレイピングには AngleSharp を使うのが簡単なようです。

AngleSharpはとても便利で、form の submit 周りも簡単に処理できます。C# なので iOS、Android の他、たぶん Winows などでも動くはずです。

実装例

Qiitaにログインして通知数を取得する処理を書いてみました。
ユーザー名とパスワードの部分を書き換えて、Xamarin Workbooks に貼り付ければ簡単に動作確認ができます。

using AngleSharp;
using AngleSharp.Dom;
using AngleSharp.Html.Dom;

//Cookieを有効化
var config = Configuration.Default.WithCookies().WithDefaultLoader();
var context = BrowsingContext.New(config);
//URLを取得
await context.OpenAsync("https://qiita.com/login");

//ログイン前のURL表示
Console.WriteLine(context.Active.Location);

//submit
var document = await context.Active.Forms[0].SubmitAsync(new
{
    identity = "Qiitaのユーザー名またはメールアドレス",
    password = "Qiitaのパスワード"
});

//ログイン後のURL表示
Console.WriteLine(context.Active.Location);

//通知件数取得
var notifications = document.QuerySelector(".st-Header_notifications");

Console.WriteLine(notifications.InnerHtml);

Visual Studio for Mac で作成したテストプロジェクトを Github にあげておきました。

5
4
0

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
5
4