GimboMedlem sedan dec. 20001 626 inlägg Tja,
nu vill man kanske göra mission impossible men, kan man ta ut följande bildspel via xmlhttp?
http://expressen.se/index.jsp?d=2095
jag använder mig utav följande kod men får det inte att fungera, dvs jag kan varken få ut samtliga bildspel, och när jag gjort det så får jag inte popupen att fungera??
<%
Function kandisar(n)
sFind = "<table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""375"">"
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://expressen.se/index.jsp?d=2095", False
objHTTP.Send
str = objHTTP.responseText
Set objHTTP = Nothing
str = Right(str,Len(str)-InStr(str,sFind)+1-len(sFind))
str = Left(str,InStr(str,"<hr size=""1"" noshade width=""375"" color=""#cccccc"">")-30)
a=split(str,"<br>")
for i = 0 to Ubound(a)
if i = n then
exit for
end if
a(i) = Replace(a(i),"<a href="".*"""," ")
a(i) = Replace(a(i),"</a>"," ")
myStr=myStr+a(i)+"<br>"
next
kandisar = myStr
End Function
%>
ngn som kan hjälpa?
Sv: mission impossible xmlHTTP?
Hej,
till saker som dessa är Regular Expressions ganska bra att använda. Den här koden fungerar så som expressens sida ser ut just nu - men om de ändrar för mycket i html-koden så kommer förmodligen detta inte att fungera.
Observera också att detta endast är testat på den nuvarande sidan - det är nog en bra idé att vänta på att sidan uppdateras, och testa scriptet då igen för att se att det verkligen fungerar som det ska
<%
Function kandisar(n)
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://expressen.se/index.jsp?d=2095", False
objHTTP.Send
str = objHTTP.responseText
Set objHTTP = Nothing
' Ta bort alla radbrytningar
str = replace(str, vbcrlf, "")
str = replace(str, vbcr, "")
str = replace(str, vblf, "")
Dim Re ' RegExp-objektet
Dim htmlBuffer ' Kommer att innehålla HTML-koden som ska returneras av funktionen
' Skapa ett reguljärt uttryck för att hämta informationen
' Vi använder två stycken här för att hämta bild, rubrik och länk
reg = "(?:<a href=""Javascript:PopWin\('(\/ego\/[^']*)',[^\)]*?\);""><img src=""([^""]+)""[^>]+><\/a><\/td>"
reg = reg & "|<td valign=""top""><a href=""Javascript:PopWin\('(\/ego\/[^']*)',[^\)]*?\);"">([\s\S]*?)</span>([\s\S]*?)<br><\/span>([\s\S]*?)<br><\/a><\/span>)" '
Set Re = New RegExp ' Skapa ett regexp objekt
Re.Pattern = reg ' Tilldela sökmönstret
Re.Global = true
Re.IgnoreCase = True
htmlBuffer = ""
i =0
set m = Re.Execute(str) ' Sök!
For Each objMatch in m ' För varje träff...
If i Mod 2 =0 then ' Hämta bildinfo (varannan träff innehåller bild+länk, varannan rubrik+länk)
imgSrc = "http://www.expressen.se" & objMatch.Submatches(1)
Else ' Hämta övrig info (rubrik och länk)
strPopupURL = "http://www.expressen.se" & objMatch.Submatches(2)
strHeader = objMatch.Submatches(4)
'** Bygg ihop den HTML-kod som ska returneras
htmlRow = "<table border=1>"
htmlRow = htmlRow & "<tr><th>Rubrik:</th><td>" & strHeader & "</td></tr>"
htmlRow = htmlRow & "<tr><th>Bild:</th><td><img src='" & imgSrc & "' /></td></tr>"
htmlRow = htmlRow & "<tr><th>URL:</th><td><a href='" & strPopupURL & "' target=_blank>" & strPopupURL & "</a></td></tr>"
htmlRow = htmlRow & "</table>"
htmlRow = htmlRow & "<hr>"
htmlBuffer = htmlBuffer & htmlRow
End If
i = i + 1
If n > 0 and n = (i/2) Then Exit For ' Hämta bara så många vi vill ha
Next
kandisar = htmlBuffer
End Function
response.write kandisar(5) ' Hämta fem st.
%>
Mvh
David
GimboMedlem sedan dec. 20001 626 inlägg det var bland det GRYMMASTE jag sätt, skit stor tack mannen, men är det möjligt att placera 2 bilder bredvid varandra och sedan radbrytning, eller blir det för krångligt?
Hej, kul att det uppskattades :)
Ja, du kan ju i princip presentera resultatet på precis vilket sätt du vill. Scriptet plockar ju ut de enskilda variablerna imgSrc, strPopupURL och strHeader - sedan är det bara att sy ihop lite HTML-kod av det (som sker i htmlRow-variabeln i scriptet). En enkelt variant av hur man skulle kunna visa på per rad skulle kunna vara så här:
' ------- 8<--- avklippt kod----8<---------
'** Bygg ihop den HTML-kod som ska returneras
htmlRow = "<a href=""" & strPopupURL & """ target=_blank><img src='" & imgSrc & "' /></a>"
If (i+1)/2 Mod 2=0 Then htmlRow = htmlRow & "<br >"
htmlBuffer = htmlBuffer & htmlRow
End If
' ------- 8<--- avklippt kod----8<---------
Men det är ju bara att testa för att få fram det som du vill ha det.
/David
GimboMedlem sedan dec. 20001 626 inlägg man tackar! förresten fick du mitt privata mess?