Hej! Hej! Någonting sånt här skulle jag tro: Tack och bugar! :) Till att börja med måste du använda Document.body.innerHTML med "InStr" funktionerna (istället för innerText) för att få med länkarna i " Hej! Ok, men om du gör likt du gjorde i din förra kod. Hämtar allt mellan "STÄLLEN" och "vbCrLf & vbCrLf & vbCrLf", fast med innerHTML, får du då inte med rubbet, dvs alla namn och länkar? Hej! Hej!Plocka fram info ur webbrowser
Jag håller på med ett program som loggar in på en sida och plockar information, ändrar information m.m men nu har jag fått ett totalt tvärstopp!
Det är så att när man är inloggad på sida så använder den session, och när jag ska hämta information ur webbrowsern så fort jag problem. Det är så att jag använder en inet1 kontrol som hämter information, men den blir ej tilllåten att hämta information eftersom sidan anser att den inte är inloggad, här är den koden jag använder för detta:
Function Stallenkolla1()
Dim sChunk As String, ret As Long
Dim sTest As String
Dim iContentLenght As Long
On Error GoTo NoInet
Inet2.URL = WebBrowser2.LocationURL 'Här hämter jag sidan!
Inet2.Execute
Do While Inet2.StillExecuting = True
DoEvents
Loop
iContentLenght = Inet2.GetHeader("Content-Length")
sChunk = Inet2.GetChunk(iContentLenght)
ret = InStr(sChunk, "STÄLLEN") ' Här letar jag efter var på sidan STÄLLEN står!
sText = Mid$(sChunk, ret + 1, 40) ' Här plockar jag all text som är 40 tecken efter ställen
MsgBox sText ' Här skriver jag ut informationen
Exit Function
NoInet:
MsgBox "Fel!"
End Function
Så jag undrar om någon vet någon annan kod som göra att man läser DIRÄKT ifrån webbrowser asså letar och plockar ut text därifrån!?
Sv: Plocka fram info ur webbrowser
Jag har hittat kommig på ett sätt att göra detta nu men nu har det uppståt nya problem!
Här är den koden jag använder för att plocka ut text från WebBrowser:
Dim start As Long
Dim Slut As Long
start = 1
start = InStr(start, WebBrowser1.Document.body.innerText, "STÄLLEN") + 7' Här plockar jag texten som står efter STÄLLEN
Slut = InStr(start, WebBrowser1.Document.body.innerText, vbCrLf & vbCrLf & vbCrLf)' Här bästemmer jag hur mycket text den ska plocka från sidan!
Stallen = Mid$(WebBrowser1.Document.body.innerText, start, Slut - start)' Här skriver jag ut texten
Den koden som står har ovanför fungerar mycket bra förutom 1 sak!, det är att när jag sen ska skriva ut detta till en listbox så blir det problem för då vill den inte göra "Enter" asså det vill inte lägga till en ny rad för allt!
För om jag skriver ut det i en msgbox så blir det fökjande:
Gatukök
Pizzaria
Resturang
osv,, då används enter men det blir det ej i en listbox! :/ Där blir det sånna konstiga tecken som ser ut typ såhar : ||
Så min fråga är hur gör jag en "loop" som skriver ut all text (Gatukök, Pizzaria, Resturan osv) på var sin ny rad!?
Sen har jag en till fråga, Jag undrar hur jag ska göra följande: Den texten som skrivs ut (Gatukök, Pizzaria, Resturan osv) är varsin länk typ gatukök länkar till stallen.php?id=21545 , så då undrar jag hur jag han "skriva ut" dom länkarna och spara dom i en string?
Sv: Plocka fram info ur webbrowser
Dim asStallen() as string
Dim iCount as integer
asStallen = Split(Stallen, vbCrLf)
For iCount = 0 to UBound(asStallen)
Listbox.AddItem asStallen(iCount)
Next iCountSv:Plocka fram info ur webbrowser
Sen har jag en till fråga!, den lyder följande.
Hur gör jag om jag vill få reda på villken länk alla dom här ställena länkar till?
Asså som tillexempel så länkar Gatukök till stallen.php?id=21545 och pizzaria länkar kanske till stallen.php?id=22545 ,, så jag undrar hur jag gör för att hämta detta från sidan.Sv: Plocka fram info ur webbrowser
Sedan skulle du kanske kunna splita upp varje rad med hjälp av "" (eller "").
ex. asStallen = Split(Stallen, "</a>")
Nu borde din array "asStallen" innehålla rader i följande stil:
ex. <a href="stallen.php?id=21545">Gatukök
Nu skulle du kunna splita varje rad i arrayen ytterligare en gång med hjälp av "> och använda "Replace" funktionen för att ta bort oönskad text. Säg att du vill lägga länkarna i en annan Listbox:
ex.
For iCount = 0 to UBound(asStallen)
Listbox.AddItem Split(asStallen(iCount), chr(34) & ">")(1)
Listbox2.AddItem Replace(Split(asStallen(iCount), chr(34) & ">")(0), "<a href=" & chr(34), "")
Next iCount
Nån modifiering kanske krävs beroende på hur din href sträng ser ut.Sv:Plocka fram info ur webbrowser
Tack för ditt svar :)
Jag har fått denna kod att funka tills viss del:
Dim start As Long
Dim Slut As Long
start = 1
start = InStr(start, WebBrowser1.Document.body.innerHTML, "property.php?info=")
Slut = InStr(start, WebBrowser1.Document.body.innerHTML, " ")
StallenLankar = Mid$(WebBrowser1.Document.body.innerHTML, start, Slut - start)
StallenLankar = Replace(StallenLankar, "property.php?info=0&id=", "")
StallenLankar = Replace(StallenLankar, """><IMG", "")
MsgBox StallenLankar
Denna kod funkar så att den hämter länk id'ett tillexempel (15623)
Men hur ska jag göra för att hämta id'et från dom andra "ställena"? (det finns inget bästemet antal "ställen" utan det beror på varje användere!.. Så undrar hur jag han hämta id'et från alla dom här ställena!?
Sv: Plocka fram info ur webbrowser
Det du hur som helst måste hitta är något unikt som markerar vart alltihop slutar så att säga. Jag trodde att "vbCrLf & vbCrLf & vbCrLf" kunde uppfylla detta syfte.Sv:Plocka fram info ur webbrowser
Det som är specielt från som känneteknar länkarna är att dom innehåller: property.php?info= så det man isåfall kan göra är väll att söka igen efter all html kod efter en texten och sen skriva ut dom eller??
för imellan ställen och "vbCrLf & vbCrLf & vbCrLf" så finns det en j*vla massa kod!
Så då undrar jag ur jag ska göra för att söka igenom och skriva ut alla länkar i en string i denna form
Länk1 &vbCrLf& Länk2 &vbCrLf& Länk3 osv..Sv: Plocka fram info ur webbrowser
Jag har fått fram en lösning på mitt problem nu,, lite rörig kod men det funkar iallafall här är den:
Dim nPos As Integer
Dim test As String
Dim sLink As String
nPos = 1
Do Until nPos = 0
nPos = InStr(nPos, WebBrowser1.Document.body.innerHTML, "&id=")
If nPos > 0 Then
nPos2 = InStr(nPos, WebBrowser1.Document.body.innerHTML, " ")
If nPos2 > 0 Then
sLink = Mid(WebBrowser1.Document.body.innerHTML, nPos, nPos2 - nPos)
nPos = nPos2
'MsgBox sLink
test = test & sLink
End If
End If
Loop
MsgBox test
Text1 = test
test = Replace(test, "&id=", "")
test = Replace(test, """>", vbCrLf)
test = Replace(test, "<IMG&id=", "")
test = Replace(test, "Gatukök", "")
test = Replace(test, "Pizzeria", "")
test = Replace(test, "Restaurang", "")
test = Replace(test, "H*rhus", "")
test = Replace(test, "Bank", "")
test = Replace(test, "Plantage", "")
test = Replace(test, "Magasin", "")
test = Replace(test, "Pub / Nattklubb", "")
test = Replace(test, "<IMG", "")
test = Replace(test, "Pub", "")
MsgBox test
Text1 = test
Med denna kod så lägger jag alla "id nummer" i en listbox ungefär så här:
157341
157341
123461
123461
156301
156301
Som ni ser så blir det dubletter av dom, då undrar jag hur jag ska får bort dubletterna!