【開発】もしもドロップのカテゴリ取得
もしもドロップのWebAPIを試してました。
これまで各社WebAPIを触ってきましたが、もしものカテゴリ数が尋常では無いほどの数です。
所詮カテゴリなどと舐めてかかってました。いきなりのアクセス禁止されちゃた。
今度は礼儀よく2秒ほどウェイトをかけて、ちょっとづつ読み出してる最中です(あまりに時間が掛かるので、ブログ書いてるところ(;^ω^))
取得したカテゴリの内容は、こんな感じです。
010C02カップ焼きそば
010C0201日清食品
010C02FFその他のカップ焼きそば
010C03カップそば
010C0301日清食品
010C0302エースコック
010C03FFその他のカップそば
010C04カップうどん
010C0401日清食品
010C0402エースコック
010C04FFその他のカップうどん
010C05カップパスタ
010C06カップスープ
010C0601クノール
010C0602ポッカ
010C06FFその他のカップスープ
010CFFその他のカップ食品
010D水・ミネラルウォーター
010D01Evian
010D02Contrex
010D03CRYSTAL GEYSER
カテゴリっていうか、商品名とかメーカー名すらも入ってしまってるじゃまいかヽ(;゚д゚)ノ
いまの時点で、既に200は超えてるし、まだ半分来てそうに無いぞ・・。なんつー数だ。
大したコードではないですけど、C#での実験コードはこんな感じです。その都度、子カテゴリがあるか見に行ってます(再帰呼出)
このメソッドから抜けたら、DataTableをAcceptChangeして取得完了となります。
/// <summary>
/// もしもAPIカテゴリ取得(内部で再起呼出)
/// </summary>
/// <param name="strAuthID">認証コード</param>
/// <param name="ParentID">親カテゴリID</param>
/// <param name="dt">格納先DataTable</param>
/// <returns></returns>
bool GetMoshimoCategories(string strAuthID,string ParentID,moshimo.dtCategoryDataTable dt)
{
WebClient wc = new WebClient();
wc.QueryString.Add("authorization_code", strAuthID);
wc.QueryString.Add("article_category_code", ParentID);
XmlDocument xd = new XmlDocument();
Thread.Sleep(1000*2);
xd.Load(wc.OpenRead(clsCommon.c_moshimo_api_cat2));string res = xd.SelectSingleNode("//Result/Status").InnerText; //error
if (!res.Equals("OK")) return false;string cnt = xd.SelectSingleNode("//Rows").InnerText; //rows
XmlNodeList nodes = xd.SelectNodes("//Children/Child");
foreach (XmlNode xn in nodes)
{
moshimo.dtCategoryRow row = dt.NewdtCategoryRow();
row.ID = xn.SelectSingleNode("Code").InnerText;
row.Name = xn.SelectSingleNode("Name").InnerText;
row.ParentID = ParentID;
dt.AdddtCategoryRow(row);Debug.WriteLine(row.ID + row.Name);
//子カテゴリの取得
GetMoshimoCategories(strAuthID, row.ID, dt);
}
return true;
}
これがある程度できたら、商品データ取得をしてみます。
追記:
やっと取得完了。1413件もありましたよ。ダントツにトップレベルなカテゴリ数です。
追記:
う~む。文字化けを1件確認しました。例のごとく「~」です。「お~いお茶」の「~」ではないかと推測しますが。
01110101お?い お茶
もしもの方で、Macで管理されてたりすると「~」では無く、「~」として入力されるのが問題のようです。さて、どうすんべか。Macでなんかデータ管理に使うなよッと言うのはさておき、どこぞのタイミングで対応しないといけない。
ディスカッション
コメント一覧
まだ、コメントがありません