私はネットショッピングが大好きで、普段から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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- その他(買い物・ショッピング) JANコードの登録について 1 2022/07/23 14:19
- その他(悩み相談・人生相談) 彼氏がクオリアというネットワークビジネスをしているかもしれません。 1 2022/04/25 00:34
- Excel(エクセル) ある文字を含む際に、値を返す数式についてです 5 2022/08/28 16:58
- Amazon こちらはAmazonのきちんと下お店ですか? 5 2022/07/29 20:08
- 大学受験 大学の志望理由の添削をお願いします! 私は将来起業をしたいと考えております。 そのため貴学の商学 部 7 2022/09/17 14:45
- その他(プログラミング・Web制作) パイソンでのプログラミングについて 3 2022/08/11 20:31
- その他(ビジネススキル・経営ノウハウ) クラウドファウンディングによる新製品の販売支援要求。「あれ?この商品、もう完成品じゃね?」という疑問 2 2022/08/22 12:32
- その他(ビジネス・キャリア) 人の文章を書き換えることは著作権法違反にあたりますか? 2 2022/06/19 21:47
- メディア・マスコミ 途上国の場合、アムウェイは良いビジネスですか? 8 2022/10/15 03:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IPアドレス、サブネットマスク...
-
ヤフー知恵袋みたいなサイトを...
-
プログラミングの次に何を勉強...
-
本を買うのはもったいない?
-
eclipseで関数printfを解決でき...
-
VB.NETでネットワークについて...
-
Google ColaboでGUI作成
-
Windows Media Playerを開くと...
-
Ps+のフリープレイでDestiny2の...
-
scipy っていうのをいれようと...
-
python urlopen error について...
-
DirectX Graphics と OpenGLっ...
-
本格的なGUIを作るのにおすすめ...
-
String^の^自体が何を意味して...
-
VB.NET とドットNET(.NET...
-
マイコンSHでSQRT(平方根)が...
-
VB BitmapをExcelに貼り付け 大...
-
iCloudフォトライブラリ内の画...
-
Windows上でJavaかc言語を使い...
-
生年月日(yyyy/MM/dd) → 年齢...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IPアドレス、サブネットマスク...
-
ヤフー知恵袋みたいなサイトを...
-
Qtを勉強するのに何か良い書籍...
-
in_addrのs_addr?
-
C言語等での画像処理の勉強方法
-
スクレイピングについて【初心者】
-
RS232Cの制御について詳しく書...
-
MSP430のプログラム学習
-
Win32APIのおすすめ実用書
-
MFCについて詳しく書かれている...
-
タイピングゲームのプログラミ...
-
C/C++でHTMLソースの取得はでき...
-
本の誤植について
-
CかVBでポートを制御する方法
-
T-kernelに関しての質問です。
-
月額15,000円のプログラミング...
-
OpenOffice.org BaseはAccessの...
-
eclipseで関数printfを解決でき...
-
大阪梅田でプログラミング関係...
-
OLEの構造化ストレージについて...
おすすめ情報