1

2年契約の価格を見つけてメッセージボックスに表示したいのですが。これまでのところ:

Dim MyPage
Dim Price
Set MyPage=CreateObject("Microsoft.XMLDOM")
MyPage.load("http://www.verizonwireless.com/b2c/store/controller?item=phoneFirst&action=viewPhoneDetail&selectedPhoneId=5723")
Wscript.Sleep 2000
Set Price = MyPage.getElementsByTagName("span")
For Each Elem In Price
   MsgBox(Elem.firstChild.nodeValue) 
Next

私は完全に間違っていることを理解していますが、どこから始めればよいのかさえわかりません。私はこのような簡単なプログラムを書くのが大好きですが、始めるのに助けが必要です。どんなアイデアでも役に立ちます!

4

3 に答える 3

2

ここではより良いバージョンで、HTMLFile オブジェクトを使用します

Dim HTMLDoc, XML, URL, table
Set HTMLDoc = CreateObject("HTMLFile")
Set XML = CreateObject("MSXML2.XMLHTTP")
URL = "http://www.verizonwireless.com/b2c/store/controller?item=phoneFirst&action=viewPhoneDetail&selectedPhoneId=5723"

With XML
  .Open "GET", URL, False
  .Send
  HTMLDoc.Write .responseText
End With

Set spans = HTMLDoc.getElementsByTagName("span")
for each span in spans
  WScript.Echo span.innerHTML
next

'=><SPAN>Set Location</SPAN>
'=>Set Location
'=><SPAN>Submit</SPAN>
'=>Submit
'=>Connect with us
于 2012-05-23T13:34:05.513 に答える
1

使用するコントロールは XML ドキュメントを読み取るためのものです。次のようなものが必要です

'Create an xmlhttp object, the string depends on the version that is installed 
'on your pc could eg also be "Msxml2.ServerXMLHTTP.5.0"
Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.Open "GET", "http://admin:pasword@10.0.0.2/doc/ppp.htm", False 
xmlhttp.Send
text=xmlhttp.responseText
wscript.echo text
Set xmlhttp = Nothing

レジストリで XMLHTTP の検索を実行して、識別子の正しい文字列/バージョンを取得します。

HTMLからタグを取得するには、次を使用できます

text = "blabla <span>this is what i need</span> bla bla<span>second item</span> end"

function getElementsByTagName(sTextToSeachIn, tag)
  answer = ""
  separator = ""
  set oRegExpre = new RegExp
  with oRegExpre
    .IgnoreCase = true
    .Global = true
    .MultiLine = True
    .Pattern = "<" & tag & ">(.*?)</" & tag & ">"
  end with
  set oColMatches = oRegExpre.Execute(sTextToSeachIn)
  for each match in oColMatches
    answer = answer & separator & match.subMatches(0)
    separator = "|" 'use something that's not in the spancontents
  next
  if separator <> "" then
    getElementsByTagName = split(answer, separator)
  else
    getElementsByTagName = array()
  end if
end function

for each tag in getElementsByTagName(text, "span")
  wscript.echo tag
next

'=>this is what i need
'=>second item

これを行うには、vbscript よりも優れた手法と確かに優れた言語があります。そのようなことに優れている Ruby を検討することをお勧めします。

于 2012-05-22T11:11:23.777 に答える
-1

アレックス、クッキーを取得して HTMLFile で JavaScript を実行することについてのあなたのコメントに応えて、ここで私が見つけた ruby​​ スクリプトは、ある時点で役立つことを願っています。ページを読み取り、それを HTLMFile オブジェクトに渡し、その DOM で実行します。リモート JavaScript ファイル。また、activeX と Ruby の結合力についてのアイデアも得られます。

require "win32ole"

$jsxpath_uri = "http://svn.coderepos.org/share/lang/javascript/javascript-xpath/trunk/release/javascript-xpath-latest-cmp.js"
uri, xpath = "http://gist.github.com/gists", "//div[@class='info']/span/a"

http = WIN32OLE.new('MSXML2.XMLHTTP')
http.Open "GET", uri, false
http.Send
text = http.responseText

dom = WIN32OLE.new("htmlfile")
dom.Write(text)
dom.parentWindow.eval(open($jsxpath_uri){|f| f.read })

items = dom.evaluate(xpath, dom, nil, 7, nil)
len = items.snapshotLength
(0...len).each do |i|
  item = items.snapshotItem(i)
  puts item.innerHTML
end
于 2012-05-24T08:11:16.140 に答える