Data from web site

S

spaceman33

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.
 
T

Tim Williams

why not post the url?

Tim


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.
 
S

spaceman33

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.
 
T

Tim Williams

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
 
S

spaceman33

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?
 
T

Tim Williams

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.
 
S

spaceman33

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 said:
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 said:
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?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top