Data from web site

  • Thread starter Thread starter spaceman33
  • Start date Start date
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.
 
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.
 
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.
 
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
 
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?
 
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.
 
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

Back
Top