私はネットショッピングが大好きで、普段からAmazon、楽天、Yahooショッピングなどで買い物しております。
ネットショッピングで買い物するようになって気づいたのですが、サイトが違うと、同じ商品にも関わらず値段が全然違うのですね。(もちろんですが...)
同じ商品の価格を比較してくれる「価格.com」のようなサイトもあるのですが、私が普段買い物するような商品は価格.comに載ってないような商品やサイトもあるため、自分でネットサーフィンしながら、安いサイトで買っています。
その際に、商品が同じであるかどうかは写真だけでは判りません。そこで使っているのが、「JANコード」です。
これは商品ごとに割り当てられた13ケタの数字なので、商品名や写真で同じ商品か分かりにくい場合にも判別することができました。
最近スクレイピングというテクニックの存在を知りました。
もちろん相手のサイトに迷惑がかからないように気を付けないことは承知しております。
岡崎図書館事件の様なことにならないために、スクレイピングするのは一回限りです。
私がやりたいことですが、Lohacoのサイトで商品の一覧から、
(1)商品名(2)値段(3)JANコード(4)URL
以上の4つを抜き出して、エクセルにまとめることは可能でしょうか?
また可能の場合は、どのようなプログラミングで出来ますでしょうか。
LOHACOホーム>コスメ・スキンケア・美容>スキンケア・基礎化粧品>化粧水>エイジング化粧水
http://lohaco.jp/g4/55-5501-5501004-55010040002/ …
例えば以上のページです。このページにはスキンケア用品が74商品登録してあります。(現時点)
最終的にはExcelのA列に商品名、B列に値段、C列にJANコード、D列にURLを抜き出したいです。
私はこれまでプログラミングを勉強したことがなかったため、かなりハードルが高かったです。
いちを「データを集める技術(佐々木拓郎 著)」と「ExcelVBAでIEを思いのままに操作できるプログラミング術」という本を購入して勉強してみました。
しかしプログラミングの知識が全くないまま進んで行ったために、一か月くらい勉強しましたが、途中で挫折してしまいました。
また、VBAの基本から勉強しないと思い「Excel VBA 本格入門」という本を勉強しましたが、こちらは一通り理解することができました。
既存のスクレイピングツールを色々試したのですが、「Octoparse」というツールがなかなか使いやすかったです。
しかしホームページごとに構成が違ったためか、なかなか思い通りにツールが動かず、上のサイトのJANコードを抜き出すことができませんでした。
回答を頂ければ幸いです。よろしくお願いいたします。
補足もしプログラミングにお詳しい方がいらっしゃいましたら、一つの例として参考にさせて頂きたいので、上記の質問が解決できるプログラミングをご教授頂けると嬉しく思います。
※言語は問いませんので、幅広い回答をお待ちしております。
No.1ベストアンサー
- 回答日時:
kenta312さん
こんにちは。
以下サンプルプログラムですが、「参照設定」とか「プログラムの見やすさ」等々は手を抜いています。
自分なりにプログラムを整理して下さい。
Option Explicit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub testIE()
Dim I As Long
Dim J As Long
Dim objIE As Object
Dim URL件数 As Long
Dim URL配列(100) As String
Set objIE = CreateObject("Internetexplorer.Application")
objIE.Visible = True
objIE.navigate "http://lohaco.jp/g4/55-5501-5501004-55010040002/ …
Do While objIE.Busy = True Or objIE.readyState <> 4 '読み込み待ち
DoEvents
Loop
Call Sleep(1000)
URL件数 = objIE.Document.getElementsByClassName("itemBox").Length
For I = 0 To URL件数 - 1
URL配列(I + 1) = objIE.Document.getElementsByClassName("itemBox")(I).getElementsByTagName("A")(0)
Next I
For I = 1 To URL件数
objIE.navigate URL配列(I)
Do While objIE.Busy = True Or objIE.readyState <> 4 '読み込み待ち
DoEvents
Loop
Call Sleep(1000)
Cells(I, "A").Select
Cells(I, "A") = objIE.Document.getElementsByClassName("cp-product_itemName")(0).innertext
Cells(I, "B") = objIE.Document.getElementsByClassName("sellPrice")(0).innertext
Cells(I, "D") = URL配列(I)
For J = 0 To objIE.Document.getElementsByTagName("TR").Length - 1
If objIE.Document.getElementsByTagName("TR")(J).innertext Like "*JANコード*" Then
Cells(I, "C") = "'" & Trim(objIE.Document.getElementsByTagName("TR")(J).getElementsByTagName("TD")(0).innertext)
Exit For
End If
Next J
Next I
objIE.Quit
Set objIE = Nothing
End Sub
jcctaira様
ご返信ありがとうございます。
サンプルとして作って頂いたマクロを試させて頂きました。
私がやりたかったことがドンピシャで出来たので本当に驚いてしまいました。
というか、Excel VBAで実現できたことに驚いております。
スクレイピングの本は、PythonやRubyでしか出ていなかったので諦めかけていました。
やはり、IE操作のgetElement系の命令で処理できるんですね。
まだまだ分からなかった部分が多いのですが、勉強していきたいと思います。
本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++Builderに関するオススメの本?
-
Direct3D で立体地図(鳥瞰図)...
-
UMPCとMacBook
-
プログラミングを勉強しようと...
-
Linuxでネットワークプログラム...
-
大阪梅田でプログラミング関係...
-
python urlopen error について...
-
Windows Media Playerを開くと...
-
Google ColaboでGUI作成
-
VB.NET とドットNET(.NET...
-
パソコン
-
生年月日(yyyy/MM/dd) → 年齢...
-
iCloudフォトライブラリ内の画...
-
姿勢センサでプロジェクタの台...
-
C++ 標準ライブラリの実際の中...
-
LIBCMT.LIBをリンクしてコンパ...
-
C++/CLIについて
-
直線と線分の交差判定について...
-
Ps+のフリープレイでDestiny2の...
-
HTMLってホームページ以外どん...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTML CSSの勉強のポートフォリ...
-
IPアドレス、サブネットマスク...
-
RS232Cの制御について詳しく書...
-
in_addrのs_addr?
-
ヤフー知恵袋みたいなサイトを...
-
Qtを勉強するのに何か良い書籍...
-
大阪梅田でプログラミング関係...
-
さっぱりわからない
-
日本語の文字列コードを変換す...
-
MPWでCをするには?
-
Xcodeで0からC言語でプログラ...
-
プログラミング用にどのMacBook...
-
Fortran入門に関する書籍を学ぶ...
-
ラジオボタンについて
-
VC++6.0で新しいウィンドウを表...
-
C++でのロボットのプログラミン...
-
NCルータープログラム学習方法
-
プログラミング?さっぱりわからん
-
MSP430のプログラム学習
-
DirectX 入門書
おすすめ情報