タブレットを購入したいのですが、どの製品もあまり性能的には変わりなく
目星をつけた複数の製品の最安値を更新ボタン1つで同時に表示して
良きタイミングで購入したいと考えています。
理想としては、
G1~G10にURLを入力し更新ボタンを押した場合(Gは例えばとして)
A1~A10に製品名称を出力、
C1~C10に最安値を出力する
といったものです。
目星をつけている製品が現在9品ありますが、
今後増える可能性があるのでその都度対応出来る様にしたいです。
また必要な情報は、製品名称と最安値のみです。
最安値は送料込みで表示したいですが、不可能な場合は送料別で問題ありません。
以上になります。よろしくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
特定の誰か宛の内容ではありませんが、#2の書き込みについて、ちょっと誤解されそうなので、補足しておきます。
「最近、こうしたマクロが、Webスクレイピングかどうかという議論で、強行な意見の持ち主もいるようですが、お互いが権利保持者ではありませんから、お互いに主張したところで無意味です。」
というのは、禁止を求めるのは、その権利を保持した人で、もし嫌うなら、Webサイトに仕掛けをするはずなのです。むろん、そのサイトの規約などに書かれていたら、仕掛けが施されていなくても、そうした行為は避けるべきだと思います。
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
>調査する
>まず対象サイトがスクレイピングを明示的に禁止していないかどうか確認する必要があります。
>スクレイピングは人間による Web サーフィンと違って、寄り道せずに必要な情報だけ持っていきます。
-中略-
>もっともスクレイピングの認知度は一般的にはまだまだ低いですから、
この頃は、まだ、それほどWebスクレイピングをする人は多くなかったのです。
http://qiita.com/nezuq/items/c5e827e1827e7cb29011
Webスクレイピングで誰も嫌な思いをしなくて済むように、……
こうしたデータの取り扱いは、慎重にしたほうが良いようです。
No.2
- 回答日時:
私は、ご質問者さんのご要望には叶いませんが、#1さんが、苦心して作られたマクロをみて触発されましたので、私も同様のものを作ってみました。
また、価格COMは、かなり古くから、多くの企業では、価格COMサイトをインターネットで取得しているようです。おそらく、Webクエリをつかっているのではないかと思われます。
そのせいなのか、このサイトの規約事項を確認しましたが、Webスクレイピングは、私の見た範囲では禁止されていないようです。最近、こうしたマクロが、Webスクレイピングかどうかという議論で、強行な意見の持ち主もいるようですが、お互いが権利保持者ではありませんから、お互いに主張したところで無意味です。
また、このマクロは、現在(2015.08.07)のものであり、内容の変更があった場合は、
少なくとも
arbuf = Split(buf, vbCrLf) '*
の部分で、配列の添字の調整をしなくてはなりません。1本釣りの方法もありますが、他の項目との関連性が低くなりますので、避けました。
出力先は、任意のシートです。
また、コピーした場合に、URLの部分に、別の記号などが入り込むことがありますので、実行前は、確認してくださるようにお願います。
'//
Sub InternetTestAccess()
Dim objIE As Object 'バインディングの場合 InternetExplorer
Dim i As Long
Dim rBXn, buf, arbuf, prc
Dim ArOut As Variant
ReDim ArOut(20, 2)
Const myURL As String = "http://kakaku.com/pc/pda/ranking_0030/"
On Error GoTo ErrHandler
Set objIE = CreateObject("InternetExplorer.Application")
' objIE.Visible = True 'ブロックをしていると、暗黙裡に行います。
objIE.Navigate2 myURL
With objIE
Do Until Not .Busy And .ReadyState = 4: DoEvents: Loop
Set rBXn = .Document.getElementsByClassName("rkgBox noGraph")
If rBXn.Length > 0 Then
For i = 0 To rBXn.Length - 1
buf = rBXn(i).innerText
arbuf = Split(buf, vbCrLf) '*
ArOut(i, 0) = Trim(arbuf(1))
ArOut(i, 1) = Trim(arbuf(6))
prc = Replace(Trim(arbuf(16)), "¥", "", , , vbTextCompare)
ArOut(i, 2) = prc
Next
End If
Range("A1").Resize(1, 3).Value = Array("順位", "名称", "最安値")
Range("A2").Resize(20, 3).Value = ArOut
Columns("A:C").AutoFit
End With
ErrHandler:
objIE.Quit
Set objIE = Nothing
End Sub
'///
No.1
- 回答日時:
こんにちは!
-----
目星をつけた複数の製品の最安値を更新ボタン1つで同時に表示
G1~G10にURLを入力し更新ボタンを押した場合(Gは例えばとして)
A1~A10に製品名称を出力、
C1~C10に最安値を出力する
-----
といったマクロの組み込みはわからないのですが、確認したいURL先のランキングをマクロで抽出することはできますよ!
以下参考にしていただければ幸いです。
------
・ランキング・処理というシートを作成
Sub Sample1()
Dim objIE As Object
Dim strURL As String
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Dim v As Variant
Dim lngRow As Long, lngPage As Long
Dim vv(1 To 20, 1 To 3) As Variant
Dim x As Long
Set WS1 = Worksheets("ランキング")
Set WS2 = Worksheets("処理")
Set objIE = CreateObject("InternetExplorer.Application")
Do
lngPage = lngPage + 1
'タブレットPC(端末)・PDA 人気売れ筋ランキング
strURL = "http://kakaku.com/pc/pda/ranking_0030/"
If lngPage > 1 Then
strURL = strURL & "page=" & lngPage
End If
Application.StatusBar = lngPage & " ページを取得中"
With objIE
.Navigate strURL
Do While .Busy
DoEvents
Loop
Do While .ReadyState <> 4
DoEvents
Loop
.ExecWB 17, 2, 0, 0
.ExecWB 12, 2, 0, 0
End With
With WS2
.Cells.Delete
.Paste .Range("A1")
.Hyperlinks.Delete
.DrawingObjects.Delete
.UsedRange.EntireColumn.AutoFit
With Application
.CutCopyMode = False
.ScreenUpdating = True
End With
With .Cells
.WrapText = False
.Orientation = 0 'セル結合解除
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End With
v = WS2.UsedRange.Value
x = 0
For lngRow = 1 To UBound(v)
If v(lngRow, 1) Like "*位" Then
x = x + 1
vv(x, 1) = v(lngRow, 1)
vv(x, 2) = v(lngRow + 2, 1)
End If
If v(lngRow, 1) Like "最安値:*" Then
If Mid(v(lngRow, 1), 6, 1) = "―" Then
vv(x, 3) = Empty
Else
vv(x, 3) = Val(Replace(Split(Mid(v(lngRow, 1), 6), " ")(0), ",", ""))
End If
End If
Next
' WS2.Cells.Delete
WS1.Range("A2").Offset((lngPage - 1) * 20).Resize(x, 3).Value = vv
If lngPage >= 5 Then Exit Do '★上位20位まで抽出したら処理終了
Loop
Application.StatusBar = False
objIE.Quit
Set objIE = Nothing
MsgBox "取得しました"
End Sub
-----
抽出先は、URLの部分を変更していただければ変更できます!
表示する数につきましても『上位20位まで抽出したら処理終了』の部分を書き換えればできるかと!
こちらの知識不足でご希望されている通りの回答とならず申し訳ございませんが、参考にしていただけますと幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- メルカリ メルカリで最安値じゃないのに買う理由 3 2022/11/14 13:56
- ビデオカード・サウンドカード 1つのマザボでAMD&NVIDIAを同時使用できますか? 3 2022/04/22 14:36
- Excel(エクセル) エクセルで納品書を作成中ですが、関数を教えて下さい。 2 2022/09/05 10:32
- その他(生活家電) 家電製品 延長保証があり据付搬入や工事が必要な大型家電は同じ店で買うのがあとあと手間なしですよね? 3 2022/07/31 16:28
- その他(ビジネススキル・経営ノウハウ) クラウドファウンディングによる新製品の販売支援要求。「あれ?この商品、もう完成品じゃね?」という疑問 2 2022/08/22 12:32
- 価格.com 価格ドットコムについて 6 2022/11/03 09:58
- 経済学 円安で中国製のお菓子などの食品が値上がりしている理由のはなぜですか? 4 2022/09/08 21:11
- 価格.com 価格コム等でタイヤを買った方、新品でしたか? 5 2023/08/13 19:37
- メルカリ メルカリのコメント欄について 4 2022/04/24 23:59
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
メッセージボックスのOKボタ...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
EXCELのVBAでRange("A1:C4")を...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
ExcelのVBA。public変数の値が...
-
Excel VBAからAccessマクロを実...
-
エクセルのマクロをセルの値に...
-
EXCELマクロでのThisisWor...
-
VBA初心者 Ctrl+での操作、ボタ...
-
ピボットテーブルでの毎回可変...
-
VBAのIF分で時間指定の条件式の...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
他人が作ったマクロの理解
-
ExcelVBAでPDFを閉じるソース
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
TeraTermマクロの文字列結合
-
PDF出力マクロについて。マクロ...
-
#defineの定数を文字列として読...
-
エクセルのマクロをセルの値に...
-
wordを起動した際に特定のペー...
おすすめ情報