【サイト情報収集方法について教えていただけますでしょうか】

共同購入クーポンサイト東京地区限定で、日付、クーポン内容、ジャンル、価格を
5~10サイト分毎日調べていきたいと思っています。
集めた情報はexcelで一覧を作りたいです。

オールクーポンジャパンAPIページ(http://allcoupon.jp/api)のサンプルリクエストのところで
以下のようにしてみたら、
http://allcoupon.jp/api-v1/coupon?area=%E6%9D%B1%E4%BA%AC&output=xml
東京を出せたのですが、毎日自動的に収集して、そのデータをエクセルに反映させるためには、簡単な方法がありますでしょうか。教えていただけると助かります。

プログラムなど組めませんので、いい方法がありましたらよろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/11/09 18:16:10
  • 終了:2010/11/10 10:52:18

ベストアンサー

id:rome0315 No.1

rome0315回答回数13ベストアンサー獲得回数32010/11/09 23:02:14

ポイント100pt

ExcelのVBAでできます。

  1. Excelを起動じてVisual Basic Editorを起動(Alt+F11)
  2. ThisWorkBookを選択
  3. 下記のコードをコピー
  4. 保存して終了
  5. 毎日このファイルを開けば、日付ごとにシートができてデータが取得できます。

(毎日自分で開く必要があります)

調べた内容が変割った場合は、下記の行の文字列を変更すればよいです。

url = "http://allcoupon.jp/api-v1/coupon?area=%E6%9D%B1%E4%BA%AC"

↓ここから下がプログラム

Option Explicit

Private Sub Workbook_Open()

メイン

End Sub

Sub メイン()

Dim sheet As Worksheet

Dim s As Worksheet

Dim name As String

name = Format(Date, "yyyymmdd")

For Each s In Worksheets

If s.name = name Then

Exit Sub

End If

Next

Set sheet = Worksheets.Add

sheet.name = name

データ取り込み sheet

End Sub

Sub データ取り込み(sheet As Worksheet)

Dim xmldoc As Object

Dim items As Object

Dim item As Object

Dim obj As Object

Dim cnt1 As Integer

Dim cnt2 As Integer

Dim url As String

Set xmldoc = CreateObject("Microsoft.XMLDom")

url = "http://allcoupon.jp/api-v1/coupon?area=%E6%9D%B1%E4%BA%AC"

xmldoc.async = False

xmldoc.Load (url)

Set items = xmldoc.selectNodes("//result/item")

cnt1 = 1

For Each item In items

cnt2 = 1

For Each obj In item.childNodes

sheet.Cells(cnt1, cnt2) = obj.Text

cnt2 = cnt2 + 1

Next

cnt1 = cnt1 + 1

Next

End Sub

id:mars100e

rome0315様

ご回答いただきありがとうございます。コードも教えていただきありがとうございます。

無事にできました。大変助かりました。

2010/11/10 10:51:06
  • id:Silvanus
    先を越されてましたw。
    rome0315さんのご回答と違い、外部DLLを使う方法でスマートさに欠けますが
    作っちゃったので取り敢えず上げておきます。
    ご要望がありましたら、コメ欄にどうぞ。
    ---
    (1) BASP21 DLLをインストールする。
    http://www.hi-ho.ne.jp/babaq/data/BASP21-2003-0211.exe
    上記URLからBASP21-2003-0211.exeをダウンロードし
    実行してDLLをインストールして下さい。説明ページは下記のURLです。
    http://www.hi-ho.ne.jp/babaq/basp21.html
    (2) マクロ入りのExcelワークブックをダウンロードする。
    http://rct3jp.info/hatena/hatena_mars100e_101109.xls
    ※本ワークブックは、パス(ファイルの在処)の中に空白を含むところへは
     保存しないで下さい。上手く動作しません。もし、どうしてもそういう場所へ
     保存したい場合は、マクロの最初の方にコメントしてある様に
     BlUseTmpFをFalseからTrueに、StrTmpFldに実際に存在しているフォルダ
     (パスに空白を含まない所、別にC:\やD:\等のルートディレクトリでも可)を指定して下さい。
    ~使い方~
    「巡回サイトリスト」の「シート名」、「XMLのURL」を記入し
    シート上部の「クーポン収集」ボタンを押せば、情報が格納されます。
    リスト欄には20行ほどしか罫線を引いていませんが、
    単に見た目の問題でして、実際にはURLの数に制限はありません。
    rome0315さんの実行結果と異なるのは
    情報を格納するシートの先頭行にフィールド名が入り、
    フィールド名のセルにひっついている[▼]ボタンをクリックすることで
    その項目を利用して情報をソートしたり、抜き出しを行なうことが出来る点です。
    現バージョンでは、XMLに含まれる全フィールドをシートに格納し表示しておりますが、
    ご質問文中に書かれていらっしゃる様に、限られた数項目のみを
    表示されたいということであれば、その旨コメントいただければ対処します。
  • id:mars100e
    Silvanus様

    コメントありがとうございます。
    わざわざ作っていただいたファイルも大変助かりました。
  • id:Silvanus
    お気遣誠に傷み入ります(深謝)。
    何かご要望がございましたらご遠慮無くどうぞ!
  • id:mars100e
    Silvanus様

    コメントありがとうございます。
    エクセルの件ではなく、オールクーポンジャパンのAPIの件になりますが
    もしご存知でしたら教えてください。

    下記のような東京のみではなく、例えば神奈川、千葉を追加したり、
    クーポンサイトを限定して(ポンパレード、ピク、グルーポンなど)取得することは可能なのでしょうか。

    http://allcoupon.jp/api-v1/coupon?area=%E6%9D%B1%E4%BA%AC&output=xml

  • id:mars100e
    Silvanus様

    作っていただいたファイルについて質問があります。
    hatena_mars100e_101109.xlsでクーポン収集で更新きるのは1日1回でしょうか。34件まで表示されている状態です。それ以降追加された本日分を収集することは可能なのでしょうか。
    教えていただけると幸いです。よろしくお願いいたします。
  • id:Silvanus
    ごめんなさい、コメントが追加されていたことに全然気付きませんでした!(汗)
    > 下記のような東京のみではなく、例えば神奈川、千葉を追加したり
    これは既にお試しいただいたかも知れませんが、可能ですよ。
    > クーポンサイトを限定して(ポンパレード、ピク、グルーポンなど)取得することは
    これが新しく立てられたご質問ですね。クーポンの内容がXML形式で
    提供されていれば、同じマクロで取り込み可能です。
    ただ、サイトによっては、AllCoupon程中身が整理されていないものがありますので
    その場合は、取り込んだ後の追加の処置が必要になります。
    実際にそういったサイトを取り込まれてみて「ここはこうしたい!」という
    ご要望がありましたら、可能な限り対処いたします。
    > クーポン収集で更新きるのは1日1回でしょうか。
    いえいえ、実行した分だけ内容は更新されます。
    ただ、現状では上書き保存、つまりサイト上で公開されている現時点で有効な
    クーポン情報のみをその都度書き込んでおりますので、過去の履歴を残したいという
    ご希望があれば、その様に改造いたします。簡単にできますので。

  • id:mars100e
    Silvanus様

    返信ありがとうございます。
    以前作っていただいたファイルで質問があるのですが、
    hatena_mars100e_101109.xlsのシート、巡回サイトリストに
    例えば東京2というシート名をつけて、東京1と同じxmlのURLを入れて、
    東京2のシートを作ったあとに、クーポン収集ボタンを押してもデータが収集されていないのですが、
    私の設定になにか問題があるのでしょうか。
  • id:Silvanus
    お返事遅くなって申し訳ございません。
    こちらの方で同じ様に試してみましたが…きちんとデータを収集してました。
    どこがおかしいんでしょうね?
    「東京2」というシート名を記入された後に
    Enterキー等を押して、セルの内容を確定されましたでしょうか?
    もしかしたら、セルの内容が確定されておらず、
    記入内容を認識できなかったのかも知れません。
    因みに、URLの欄は、Excelが自動設定するハイパーリンク(通常は青字+下線)に
    なっていてもなっていなくてもどちらでも問題無く処理できます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません