webForumDet fria alternativet

Ta HTML från annan sida, formatera om och visa

ASP

3 svar · 305 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Frågan#1

Ja, rubriken säger väl ungefär vad jag vill göra..

Detta vill jag göra, utan iframe

sida1.asp genererar två tabeller, dessa vill jag plocka ur från den executerade koden, ändra uteendet och visa på sida2.asp..

Jag har för mig att någon frågade om detta tidigare men jag hittar inte tråden..

Går det att göra? Hur?

//G8

Medlem sedan jan. 20011 213 inlägg
#2

Aleborg har ju ASPtear installerat, så det funkar fint att hämta hela sidan. :)

'AspTear constants
Const Request_POST = 1
Const Request_GET = 2

Set objTear = CreateObject("SOFTWING.ASPtear")
Response.ContentType = "text/html"

On Error Resume Next

Dim strRetval
' URL, action, payload, username, password
strRetval = objTear.Retrieve("http://www.domain.com/sida1.asp", Request_GET, "", "", "")

If Err.Number <> 0 Then
     Response.Write "<b>"
     If Err.Number >= 400 Then
         Response.Write "Server returned error: " & Err.Number
     Else
         Response.Write "Component/WinInet error: " & Err.Description
     End If
     Response.Write "</b>"
Response.End
End If

Response.Write(strRetval)

hela sidan sparas i strretval, kan jag nu på något fiffigt sätt plocka ut informnation från den HTML koden som ligger i strretval?

T.ex: en IP adress ligger alltid mellan <div class="ip"> och </div>, men IPadressen kan vara olika. Kan jag nu ta och plocka ur värdet i strretval, mellan dessa taggar oberoende av vilken IP som ligger där?

Det som det handlar om är alltså att strippa ur viss data från sidan, och visa den. Inte visa hela sidan alltså..

Tänkte mig nån regexp och replace funktion eller nått, men vet inte hur det hela ska gå till.

//G8

!Red

Medlem sedan jan. 20011 213 inlägg
#3

Ok, kommer längre och längre..

Ska med hjälp av regexp plocka ut värdet vid .+ i en tabell, kruxet är att det är radbrytningar i själva värdet, vilket regexp inte verkar gilla..

mitt regexp nu:

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "<tr><td><b>IP</b></td><td>.+</td></tr>"
Set myMatches = objRegExp.Execute(strretval)
Response.Write "RegExp hittade "&myMatches.Count&"st träffar<br><br>"
For each item in myMatches
  Response.Write "Hittade en träff vid position "&item.FirstIndex&", som är "&item.Length&" tecken lång. Värdet är <b>"&item.Value&"</b><br>"
Next

kruxet är ju att texten den söker igenom faktiskt ser ut så här:

  <tr>
    <td><b>IP</b></td>
    <td>10.16.124.xx:12345</td>
  </tr>

därmed hittar den ingen match...

Hur gör jag nu för att den ska söka efter den strängen, och ignorera radbrytningar i texten?

Medlem sedan jan. 20011 213 inlägg
#4

Lite till :)

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "<tr>\s+<td><b>Name</b></td>\s+<td>.+</td>\s+</tr>"
Set myMatches = objRegExp.Execute(strretval)
Response.Write "RegExp hittade "&myMatches.Count&"st träffar<br><br>"
For each item in myMatches
  Response.Write "Hittade en träff vid position "&item.FirstIndex&", som är "&item.Length&" tecken lång. Värdet är <b>"&item.Value&"</b><br>"
Next

Hur skriver jag nu BARA ut värdet vid punkten "."?

253 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)