【開発】もしもドロップのカテゴリ取得

開発ざれごとwebapi,カテゴリ,もしも

sc20120104202102

もしもドロップの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でなんかデータ管理に使うなよッと言うのはさておき、どこぞのタイミングで対応しないといけない。

開発ざれごとwebapi,カテゴリ,もしも

Posted by nabe