珍しくIEが主役のモノレート自動取得スクリプト

ツールについて

自動でモノレートから販売個数をまとめて取得するツール(サンプル)

更新日:

命名『monoPeak』

今回のお話はあくまでもサンプルのソースコード、スクリプトです。モノレートの結果をASINをもとに、まとめて自動取得するという案のひとつです。

モノレートからまとめてデータを自動取得できるツールはないかなぁ、とお悩みの方はこの記事が参考になるかもしれません。

たとえば100件のASINを読み込ませれば、自動で100件の3ヶ月分月間販売個数をモノレートから取得することができるようになります。

Amazonからはランキング変動数、月間販売数までは取得することができませんので、そういった情報はモノレートから取得するしかありません。

自分でモノレート相当のツールを作るというのもアリですが、データを溜め込むのに時間がかかります。数ヶ月から1年といった期間が必要でしょう。

また、常に最新データを取得する必要があるため、24時間動かしっぱなしにしなければなりません。

Windows上で動くツールだとパソコンをずっとシャットダウンできないのはちょっと心配だし、じゃあwebアプリにすれば…PHPでプログラムを書けばいいのかというとソースコードが丸見えになるので公開できなくなるし…。

それにPHPで作るとサーバのレンタルや設定など、複雑になりすぎてしまいますしね。というわけでモノレートからまとめて月間販売個数を取得するにはスクリプト、VBScriptを使うという案に落ち着いたわけです。

悪用厳禁!モノレートからまとめて自動でデータ取得するサンプルスクリプト

まず最初に、これはサンプルスクリプトでありwebスクレイピングを助長するものではありません。

あくまでもこういう方法でインターネットエクスプローラを自動で制御してモノレートからデータ取得ができる、というひとつの案です。

サンプルコードのご利用は自己責任でお願いします。

VBScriptってなに?

簡単に説明しますと、Windows上で動くスクリプトです。お友達にJavaScriptなんてやつがいたりしますが、聞いたことはありますよね?JavaScriptさんは主にブラウザで動くスクリプトです。

スクリプトって何?という点については、簡単に説明するとコンパイル不要のプログラミング言語というところです。プログラムは本来コンパイル・ビルドといって小難しい英数字の羅列を機械語(16進数とか)に置き換える作業が必要なのですが、スクリプトはこれが不要なのです。

ちなみにわたしは結構VBScriptは好きです。

サンプルスクリプト『monoPeak』

まずは手っ取り早くサンプルスクリプトを置いておきます。一応名前をつけていまして…monoPeakとしています。モノレートの山の数をカウントするスクリプトなので。…どちらかというと谷ですけどね。

'***** ユーザ設定 *****
Dim max:          max          = 0 ' データ取得するASIN数(多いとブロックされるため任意で指定)
Dim isIeVisibled: isIeVisibled = true ' 実行中にIEを表示するか。true or false
'**********************

Dim asinList
Set asinList = CreateObject("System.Collections.ArrayList")
getAsinList()

Dim isExec
isExec = MsgBox("処理を開始します。",vbOKCancel,"確認")

If isExec = 2 Then
	MsgBox "キャンセルしました。終了します。",,"確認"
End If

Dim resultFileName
resultFileName = "00_result/00_result_" + Replace(FormatDateTime(Now(),2),"/","") + Replace(FormatDateTime(Now(),4),":","") + Right("0" & Second(Now()) , 2) +".csv"

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim outputFile
Set outputFile = fso.OpenTextFile(resultFileName, 2, True)
outputFile.WriteLine "ASIN,過去1ヶ月目販売数,過去2ヶ月目販売数,過去3ヶ月目販売数"

Set objShell = WScript.CreateObject("WScript.Shell")

Dim cnt
cnt = 0
For Each elem In asinList

	If cnt >= max Then
		Exit For
	End If

	Dim resultAry
	resultAry = getMono( elem )

	Dim resultStr
	If UBound( resultAry ) = 2 Then
		resultStr = elem + "," + resultAry(0) + "," + resultAry(1) + "," + resultAry(2)
	Else
		resultStr = elem + ",---,---,---"
	End If

	outputFile.WriteLine resultStr
	cnt = cnt + 1

	objShell.SendKeys "+"

Next

outputFile.Close

MsgBox "処理完了",,"お知らせ"

Function getMono( asin )

	Dim monoUrl
	monoUrl = getMonoUrl( asin )

	Set IE = CreateObject("InternetExplorer.Application")
	IE.Visible = isIeVisibled
	IE.navigate monoUrl

	Do While IE.Busy Or IE.readyState < 4 Loop WScript.Sleep 3000 Dim strBody Dim lngPos strBody = IE.Document.body.innerText lngPos = InStr(1, strBody, "Forbidden") If InStr(1, strBody, "Forbidden") > 0 Then
		MsgBox "終了します。",,"アクセスブロック検出"
		WScript.Quit
	End If

	If InStr(1, strBody, "parmission") > 0 Then
		MsgBox "終了します。",,"アクセスブロック検出"
		WScript.Quit
	End If

	If InStr(1, strBody, "画像認証") > 0 Then
		MsgBox "終了します。",,"画像認証検出"
		WScript.Quit
	End If

	IE.Document.Script.setTimeout getPeakNumFuncStr(), 30
	WScript.Sleep 3000

	getMono = url2peakNumAry( IE.LocationURL )

	IE.Quit
	Set IE = Nothing

End Function

Sub getAsinList()

	Dim fsoLocal
	Set fsoLocal = WScript.CreateObject("Scripting.FileSystemObject")

	Dim asinListFile
	Set asinListFile = fsoLocal.OpenTextFile("01_asin/00_asin_table.csv", 1, False, 0)

	Do Until asinListFile.AtEndOfStream
		asinList.add asinListFile.ReadLine
	Loop

	asinListFile.Close

	Set fsoLocal     = Nothing
	Set asinListFile = Nothing

End Sub

Function url2peakNumAry( url )

	Dim peakNumAry

	peakNums   = Replace( url, "http://mnrate.com/", "" )
	peakNumAry = Split( peakNums, "," )

	url2peakNumAry = peakNumAry

End Function

Function getMonoUrl( asin )

	Dim monoUrlAry
	monoUrlAry = Array( "http://mnrate.com/item/aid/", asin )

	getMonoUrl = Join( monoUrlAry, "" )

End Function

Function getPeakNumFuncStr()

	Dim fsoLocal
	Set fsoLocal = WScript.CreateObject("Scripting.FileSystemObject")

	Dim asinListFile
	Set asinListFile = fsoLocal.OpenTextFile("98_lib/getPeakNum.js", 1, False, 0)

	lineStr = asinListFile.ReadAll

	asinListFile.Close

	Set fsoLocal     = Nothing
	Set asinListFile = Nothing

	getPeakNumFuncStr = lineStr

End Function
' EOF

Stockerをなかなか公開できないためのお詫び

なぜこんな気前よくソースコードを公開するのか?どこのサイト・エンジニアでもそうですが、このような核心に触れるソースコードというのは公開したがらないものです。

当ブログは自作のリサーチツールを売りにしたブログのはずなのですが、いろいろトラブルがあってしっかりリサーチツール『Stocker』を公開できていません。(すみません…)

代わりといってはなんですが、このmonoPeakをソースコードごと紹介したというわけです。

Stockerはお問い合わせをいただければメールにてお渡しすることは可能です。ちなみに現在、Vectorより『取説も一緒にzipしろ』と怒られているところです。

Stocker公開完了のお知らせ

輸入ビジネス向けリサーチツール『Stocker』公開完了しました。ベクターよりダウンロード可能です。

下記の記事に注意事項とベクターへのリンクを記載しています。

Amazon輸入ビジネスリサーチツールStockerダウンロードページ輸入ビジネス向けリサーチツール『Stocker』ダウンロードページ
Stockerは日本AmazonのMWS APIとアメリカAmazonのPA-APIを使ったリサーチツールです。 ダウンロードのリンクはページの下記のほうに...

サンプルスクリプトを動作させるには別途、データ解析スクリプトが必要

上記のサンプルスクリプトはインターネットエクスプローラをVBScriptで遠隔操作してモノレートを自動巡回するスクリプトです。

完全体にするには、モノレートからダウンロードしたデータを解析するスクリプトが必要になります。

すべてを公開してしまうとモノレートに多大な迷惑をかけてしまう可能性があるため、その部分に関しては非公開とします。プログラムに詳しい方であれば残りの部分を作り上げることができるでしょう。

いじわるしているわけではなく、秩序の維持・モラルを重んじているということをご理解ください。開発依頼は承っておりますので、下記ページよりご連絡ください。

ココナラ:モノレートから販売個数を数える時間を削減してみませんか?

ちなみに実行結果は下記のようになります。(2017/07/20に実行した結果です)

monoPeak結果

完全体にするにはVBSとは別の言語を使用することになるので難易度が高く感じるかもしれませんが、普通のエンジニアならばまぁ扱えるレベルでしょう。わたしも本業はアプリ屋ではなくファームウェア屋ですがこの程度は書けます。

ファイル構成なども絡んできますので、一応サンプルコードのダウンロードページを用意しておきました。

モノレートから販売個数を一括自動取得するmonopeakモノレートのデータ収集・解析を効率化する『monoPeak』(サンプル)ダウンロードページ
モノレートから月間販売個数を自動で一括取得するツール・スクリプト『monoPeak』(サンプルソースコード)のダウンロードページです。 ...

monoPeak データ解析処理(販売個数カウント処理)の開発依頼について

ココナラにて購入ページを作成しました。

上記のリンクよりご依頼いただければ、monoPeak残りの処理であるデータ解析処理の開発を請け負います。

また、当ブログよりプライスターを購入していただければ、データ解析処理の開発を無料で請け負っています。

ぜひ、ご検討ください。

⇛【まずは30日間無料体験だけでも。日本版プライスター(特典付)はコチラから。】

monoPeakはサンプルソースコードの公開であり、monoPeak単体では動作しません。そのため、monoPeakを使用しない方には取扱説明書は基本的に閲覧不要の記事であり、パスワード保護を行っています。

モノレート データ収集・解析作業効率化ツール『monoPeak』取扱説明書
ソフトウェアについて ソフトウェア名称 monoPeak (Ver 1.0.0.1) 推奨環境 Windows 10, 8, 7 サポート http://amzn...

下記の記事はmonoPeakの取扱説明書です。データ解析処理開発依頼後、閲覧用パスワードをお渡しします。

-ツールについて
-, , ,

Copyright© 自作ツールと輸入ビジネス , 2017 AllRights Reserved Powered by AFFINGER4.