Tegenfeldt
New Member
- Joined
- Aug 6, 2013
- Messages
- 13
I want to step through all links and sublinks in a website to get information from some of the pages. The pages are in 7 levels, so I use nestled For.
I am able to get the first link on the top level page. I also can navigate to that link and sublinks. But when a For loop is done I don't get back to the previous level.
This is the code I use:
Maybe someone has code that can do this
I am able to get the first link on the top level page. I also can navigate to that link and sublinks. But when a For loop is done I don't get back to the previous level.
This is the code I use:
Code:
Set Browser = New InternetExplorer
Application.Wait (Now + TimeValue("0:00:01"))
Browser.Visible = True
Browser.navigate "http://www.purus.se/sv/Produkter/"
While Browser.Busy Or Browser.readyState <> READYSTATE_COMPLETE
DoEvents
Information.status = "Väntar på Internet Explorer..."
Wend
Set Document = Browser.Document
Set htmlColl = Document.getElementsByTagName("a")
Do While Document.readyState <> "complete": DoEvents: Loop
For Each htmlInput In htmlColl
Debug.Print htmlInput
Browser.navigate htmlInput.href
DoEvents
Do While Document.readyState <> "complete": DoEvents: Loop
Set Document2 = Browser.Document
Set htmlColl2 = Browser.Document.getElementsByTagName("a")
For Each htmlInput2 In htmlColl2
If InStr(htmlInput2.innerHTML, "Till produktdatabasen") > 0 Then
Debug.Print htmlInput2
Browser.navigate htmlInput2.href
DoEvents
Do While Document.readyState <> "complete": DoEvents: Loop
Set Document3 = Browser.Document
Set htmlColl3 = Document3.getElementsByTagName("iframe")
For Each htmlInput3 In htmlColl3
If htmlInput3.nodeName = "IFRAME" Then
Debug.Print htmlInput3.src
Browser.navigate htmlInput3.src ' Till Golvbrunnar <-------
DoEvents
Do While Document.readyState <> "complete": DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:01"))
Set Document4 = Browser.Document.frames("Main").Document
Set htmlColl4 = Document4.getElementsByTagName("a")
For Each htmlInput4 In htmlColl4
Debug.Print htmlInput4
htmlInput4.Focus
htmlInput4.Click ' Till Golvbrunnar - Plast <-------
DoEvents
Do While Document.readyState <> "complete": DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:01"))
Set Document5 = Browser.Document.frames("Main").Document
Set htmlColl5 = Document5.getElementsByTagName("a")
For Each htmlInput5 In htmlColl5
Debug.Print htmlInput5
htmlInput5.Focus
htmlInput5.Click ' Till Golvbrunnar - Plast <-------
DoEvents
Do While Document.readyState <> "complete": DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:01"))
Set Document6 = Browser.Document.frames("Main").Document
Set htmlColl6 = Document6.getElementsByTagName("a")
For Each htmlInput6 In htmlColl6
Debug.Print htmlInput6
If InStr(LCase(htmlInput6.href), "dbdocid") > 0 Then
Browser.navigate htmlInput6.href ' Till Golvbrunnar
DoEvents
Do While Document.readyState <> "complete": DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:01"))
Set Document7 = Browser.Document
Set htmlColl7 = Document7.getElementsByTagName("a")
Set td = Document7.getElementsByTagName("td")
i = 0
Debug.Print Document7.title
TheTD = "" ' Nothing
'Produktnamn -------- Mini Max 40 Spygatt
Do While i < td.Length
If td(i).className = "DocumentHeader" Then
'.Visible = True
Produktnamn = td(i).innerText
Debug.Print Produktnamn
Exit Do
End If
i = i + 1
Loop
'RSKnr och Produktinfo ---- i = 0 Do While i < td.Length
If td(i).className = "Documenttext" And td(i).innerText <> "" Then
TheTD = td(i).innerText
RskNr = ""
If InStr(TheTD, "RSK") <> 0 Then
RskNr = Mid(TheTD, InStr(TheTD, "RSK") + 7)
RskNr = Left(RskNr, 10)
RskNr = Replace(RskNr, " ", "")
End If
Debug.Print RskNr
Produktinfo = Mid(TheTD, InStr(TheTD, "Material"))
Produktinfo = Trim(Produktinfo)
Debug.Print Produktinfo
Exit Do
End If
i = i + 1
Loop
' Generera PDF ---------------
i = 0
Debug.Print Document7.title
Set TheLink = Nothing
'And htmlColl7(i).className = "ddmenu"
Do While i < htmlColl7.Length
If htmlColl7(i).className = "PDFLink" Then
Set TheLink = htmlColl7(i)
Debug.Print TheLink.href
TheLink.Focus
TheLink.Click
DoEvents
VäljFönster
DoEvents
Debug.Print DocID
'.Visible = True
DoEvents
strURL = "http://core.purus.se/PurusWeb/Navigate/PdfQueue.aspx?&FORCE=9720&Add=Product&Catalog=Product&DocId=" & _
DocID & "&Style=SimplePdf&Hires=&Level=&Language="
strFileName = "Purus" & DocID & ".pdf"
strSaveFile = strSavePath & strFileName
LaddaNerEnFil strURL, strSaveFile
Exit Do
End If
i = i + 1
Loop
End If
Next htmlInput6
Next htmlInput5
Next htmlInput4
End If
Next htmlInput3
Exit For
End If
Next htmlInput2
Next htmlInput
Maybe someone has code that can do this