重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記のようなPGMを書いたのですが、たとえば、yahooのニュースなどのURLを入れた場合は、
テキストをちゃんと取ってきます。ですが、amazonの商品などを指定した場合はエラーが出ます。
エラーの内容は、プロシージャの呼び出し、または引数不正です。エラーが出ているのは、
objTxtfil.Write strBdytxt & vbcrlf の41行目です。 
どなたかわかりませんでしょうか?

PGMはこちら↓

Set objInterE = WScript.CreateObject("InternetExplorer.Application")
Set objFsystm = WScript.CreateObject("Scripting.FileSystemObject")
Set objShells = WScript.CreateObject("WScript.Shell")

arrWebUrl = Array( _
"https://www.amazon.co.jp/gp/product/B00IB84W6G/r …
)


objInterE.Width = 1024
objInterE.Height = 768
objInterE.Left = 0
objInterE.Top = 0
objInterE.Statusbar = True
objInterE.ToolBar = True

objInterE.Visible = True

'保存ファイル名を指定
Set objTxtfil = objFsystm.OpenTextFile(objShells.SpecialFolders("Desktop") & "\copytest.txt" ,2,True)

For intWebUrl = 0 to UBound(arrWebUrl)
'URLを開きます
objInterE.Navigate arrWebUrl(intWebUrl)
Do Until objInterE.Busy = False
WScript.sleep(300)
Loop

'内容テキストを取り出します
strBdytxt = objInterE.Document.Body.InnerText
msgbox strBdytxt

objTxtfil.Write strBdytxt & vbcrlf
Next
'終了処理します
objTxtfil.Close
Set objInterE = Nothing
Set objFsystm = Nothing
Set objShells = Nothing

MsgBox "取得が終了しました" , vbInformation , "VBScriptテスト"

A 回答 (1件)

こんにちは。



ご質問のコードを何度か書き換えながら試してみました、早い話、.Body.InnerText で、ゴミを拾ってくるだけでした。

>エラーの内容は、プロシージャの呼び出し、または引数不正です。
このエラーは、バッファの容量を越えてしまっているわけです。

サーバーによって例外が返されました。(HRESULTからの例外:0x80010105(RPC_E_SERVERFAULT))

となるわけですが、VBSの範囲ですと、テキストバッファの容量が少ないので、あれこれしてみましたが、そのものを取り扱うことは無理だと分かりました。

こんなテクニックができればよいのですが、
i = InStr(1, strBdytxt, "Amazon ")
buf = Mid(strBdytxt, i, 20000)

InStrでも同じ現象が置きてしまいます。このまま、生のVBSでは無理なのではないかと思います。VBSで何か別のオブジェクトやラッパーなどを使えば別だと思います。どうやっても、そのままでは解決付きそうにはありません。

それと、余計なことですが、Amazon は、確か、スクレイピングを嫌っていましたよね。これ一つのページで、どういじろうが問題はないと思うのですが、Amazon側では、APIを使えというわけです。とはいえ、ちょっとAPIは敷居が高いわけです。私自身、Amazon APIには手を出したことがありません。

内容はくどくなりますから、書きませんが、下記に書かれています。
・利用許可およびサイトへのアクセス
http://www.amazon.co.jp/gp/help/customer/display …
    • good
    • 1
この回答へのお礼

すごくよくわかりました!ありがとうございます。
別の方法を考えます。

お礼日時:2016/04/18 11:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!