スマートフォン上で動くクローラーを 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 にあげておきました。