Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Data from web site

30 views
Skip to first unread message

spaceman33

unread,
Jul 2, 2005, 6:45:59 AM7/2/05
to
I am trying to get some data from a web site.
 
Because the data is part of a table on a web site, not the main table, I think that's why I can't find it.
 
Code similar to what I am trying is:
 
a = ""
    url = link
    Dim IE As Object
'this part open explorer and navigates to the web site I want
    Set IE = CreateObject("internetexplorer.application")
    With IE
        .Visible = False
        .navigate url
        Do While .ReadyState <> 4: Loop
        a = .document.body.innertext
    End With
'I would then search for the text preceeding the value I am looking for
    Position = InStr(1, a, "Enemy Kills:", vbTextCompare)
 
Like I said, I think because the text is in another section of the web page it doesn't find it.
 
Some data I found from the Source of the web site is:
 
<table id="member-jacket" class="info info-member" cellspacing="1">
 
I am hoping this will help find the solution.
 
Thanks in advance for any thoughts.
 

Tim Williams

unread,
Jul 2, 2005, 2:37:46 PM7/2/05
to
why not post the url?

Tim


"spaceman33" <barg...@gmail.com> wrote in message
news:da5r97$b3q$1...@nwrdmz03.dmz.ncs.ea.ibs-infra.bt.com...

spaceman33

unread,
Jul 2, 2005, 3:02:51 PM7/2/05
to

Yep, posted it in the original thread:

Thanks for the info.

I found the code I had previously used:
=========================================================
Sub Button4_Click()
'AA
a = ""
url = "http://login.americasarmy.com/views/login.php"
'Const url As String = link
Dim IE As Object


Set IE = CreateObject("internetexplorer.application")
With IE

.Visible = True


.navigate url
Do While .ReadyState <> 4: Loop
a = .document.body.innertext
End With

'enter login details
IE.document.all("username").Value = "username"
IE.document.all("password").Value = "password"
With IE.document.Forms(0)
.submit.Click
End With
'get score

#####THIS NEXT PART IS WHERE I WANT TO DO THE SEARCHING FOR THE STRING
Experience Required for Next Level#####

Position = InStr(1, a, "Experience Required for Next Level",
vbTextCompare)
honour = ""
For z = 13 To 25
If Asc(Mid$(a, Position + z, 1)) = 13 Then z = 25: GoTo 599
honour = honour & Mid$(a, Position + z, 1)
599
Next z
MsgBox honour
Set IE = Nothing
End Sub
==========================================================

How would I put that code into the above? I am already at the web site
page I want to grab the information from, I just need to get the
information from a section of the web page (different table or whatever
it is).

Thanks.

"Tim Williams" <saxifrax@pacbell*dot*net> wrote in message
news:OqJfkUzf...@TK2MSFTNGP09.phx.gbl...

Tim Williams

unread,
Jul 2, 2005, 6:24:32 PM7/2/05
to
If your browser already has the page loaded then you can skip all of
the navigate and login code.
Try the function below (GetPageText) - it will return the text from a
page loaded in IE which matches the passed URL parameter. This
assumes that the page does not use frames - if it does then you'll
have to include a reference to which frame you want.

You can then parse out the info from the returned string. I can't
help much with that, not having seem the text you need to separate.

Tim.

Sub tester()
MsgBox GetPageText("http://login.americasarmy.com/views/login.php")
End Sub

'Find an IE window with matching location and get the Text from
' the loaded page. Assumes no frames.
Function GetPageText(sAddress As String) As String

Dim objShell As Object, objShellWindows As Object, o As Object
Dim retVal As String, sURL As String


retVal = ""
Set objShell = CreateObject("Shell.Application")
Set objShellWindows = objShell.Windows

'see if IE is already open
For Each o In objShellWindows
sURL = ""
On Error Resume Next
sURL = o.Document.Location
On Error GoTo 0
If sURL <> "" Then
If sURL Like sAddress & "*" Then
retVal = o.Document.body.innerText
Exit For
End If
End If
Next o

GetPageText = retVal
End Function

"spaceman33" <barg...@gmail.com> wrote in message

news:da6ocr$dk4$1...@nwrdmz02.dmz.ncs.ea.ibs-infra.bt.com...

spaceman33

unread,
Jul 3, 2005, 5:04:52 AM7/3/05
to

Frames, that's the word I was looking for.

I think I need to select the frame with the ID <table id="member-jacket"
class="info info-member" cellspacing="1">, but don't know how to select it
to get the text from there.

I'm not clued up on HTML, but hopefully that is the name of the frame I want
to grab info from?

"Tim Williams" <saxifrax@pacbell*dot*net> wrote in message

news:%23IWLST1...@tk2msftngp13.phx.gbl...

Tim Williams

unread,
Jul 3, 2005, 3:23:26 PM7/3/05
to

That's a table, not a frame.

Try replacing

retVal = o.Document.body.innerText

with

retVal =
o.Document.getElementById("member-jacket").rows[0].cells[0].innerText

(watch out for wrapping)

This will get you the first cell in the table - adjust to (eg.)
"rows[3].cells[4]" to get the text you want.

That should get you closer
Tim.

"spaceman33" <barg...@gmail.com> wrote in message

news:da89nk$247$1...@nwrdmz03.dmz.ncs.ea.ibs-infra.bt.com...

spaceman33

unread,
Jul 3, 2005, 3:32:15 PM7/3/05
to

Thanks Tim, don't think I need to try that now :)

I had another look this evening and found out that the refreshed page
details weren't being passed to my variable.

I entered my login details, pressed the submit button, and then when I got
the web page text, it was still on the old page, so I just repeated the
procedure again because login lasts 30 minutes, so it goes straight to the
passworded page with the details on I want to extract, and did it that way.

It means openening IE twice to do the job, but at least it works now.

Thanks.

Just had a moment of inspiration and produced a work around.


"Tim Williams" <saxifrax@pacbell*dot*net> wrote in message

news:ehQxvSA...@TK2MSFTNGP10.phx.gbl...

0 new messages