Här kanske är onödigt med kod, men den visar hur man gör för att ta information från andra sidor (i detta fall DN).
' Hämtar se senaste nyheterna från DN.se
' skrivet av Pär Thernström, [email]feather@home.se[/email]
' 2002-05-28: Första versionen
' 2002-05-28: Visade en nyhet för lite
' 2002-06-02: Kan visa alla nyheter i en enda sträng
' eftersom samurize just nu inte fixar radbrytningar så är det lite knäppt gjort det här, men det funkar ;)
' ...och allt till musiken av:
' + Glenn_Underground -- The Jerusalem EP
' + Kent -- Vapen Och Ammunition
' + Matthew Herbert -- Bodily Functions
function nyhet0
nyhet0 = getNews(0)
end function
function nyhet1
nyhet1 = getNews(1)
end function
function nyhet2
nyhet2 = getNews(2)
end function
function nyhet3
nyhet3 = getNews(3)
end function
function nyhet4
nyhet4 = getNews(4)
end function
function nyhet5
nyhet5 = getNews(5)
end function
function nyhet6
nyhet6 = getNews(6)
end function
function nyhet7
nyhet7 = getNews(7)
end function
function nyhet8
nyhet8 = getNews(8)
end function
function nyhet9
nyhet9 = getNews(9)
end function
function nyhet10
nyhet10 = getNews(10)
end function
' alla nyheter
function nyhetAlla
nyhetAlla = getNews(-1)
end function
' vilket nyhet = 0 för huvudrubriken, 1-10 för respektive annan nyhet (flera av de sista är troligtvis tomma..)
function getNews(vilkenNyhet)
On Error Resume Next
' hämta in hela sidan
strHelaSidan = BinToText(GetHTMLBin("http://www.dn.se/"), 35000)
' huvudnyheten
if vilkenNyhet = 0 then
' slänger in alla nyheter som är snäppet mindra än största
' sjävla nyhetsrubriken ligger innanför första <a href...></a>...
arrNyheter = split(strHelaSidan, "<span class=""rubrik1"">")
' välj ut den nyhet vi vill ha
strNyhet = arrNyheter(1) ' bara en huvudnyhet
end if
' de mindra nyheterna
if vilkenNyhet > 0 then
' slänger in alla nyheter som är snäppet mindra än största
' sjävla nyhetsrubriken ligger innanför första <a href...></a>...
arrNyheter = split(strHelaSidan, "<span class=""rubrik2"">")
' välj ut den nyhet vi vill ha
if vilkenNyhet <= UBound(arrNyheter) then
strNyhet = arrNyheter(vilkenNyhet)
end if
end if
' lika för alla nyheter, utom då vi ska hämta alla samtidigt
if strNyhet <> "" and vilkenNyhet <> -1 Then
' ta bort länk å sånt (om det finns)
strNyhet = mid(strNyhet, InStr(strNyhet, ">")+1)
strNyhet = left(strNyhet, InStr(strNyhet, "<")-1)
' fixa åäö
strNyhet = fixHTMLcodes(strNyhet)
elseif vilkenNyhet <> -1 then
'strNyhet = "Ingen nyhet"
strNyhet = ""
end if
' alla nyheter
if vilkenNyhet = -1 then
' ta först ut "ettan"
arrNyheterFirst = split(strHelaSidan, "<span class=""rubrik1"">")
' ta ut alla nyheter av andra graden
arrNyheter = split(strHelaSidan, "<span class=""rubrik2"">")
' ersätt första elementet i arrayen med "ettan" (det är ingen nyhet på första platsen ändå)
arrNyheter(0) = arrNyheterFirst(1)
' in med alla i en enda sträng
for i = 0 to UBound(arrNyheter)
arrNyheter(i) = mid(arrNyheter(i), InStr(arrNyheter(i), ">")+1)
arrNyheter(i) = left(arrNyheter(i), InStr(arrNyheter(i), "<")-1)
arrNyheter(i) = fixHTMLcodes(arrNyheter(i))
strNyhet = strNyhet & " | " & arrNyheter(i)
next
end if
getNews = strNyhet
end function
' ersätter några html-koder
function fixHTMLcodes(inStr)
' ny rad strular till det
inStr = replace(inStr, "<br>", " ")
inStr = replace(inStr, vbLf, "")
inStr = replace(inStr, vbCr, "")
' blandade tecken
inStr = replace(inStr, "å", "å")
inStr = replace(inStr, "ä", "ä")
inStr = replace(inStr, "ö", "ö")
inStr = replace(inStr, "Å", "Å")
inStr = replace(inStr, "Ä", "Ä")
inStr = replace(inStr, "Ö", "Ö")
inStr = replace(inStr, "á", "á")
inStr = replace(inStr, """, """")
inStr = replace(inStr, """, """")
fixHTMLcodes = inStr
end function
' kod för att få bl.a. åäö att funka
' this code from [url]http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=128[/url]
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Function to return binary data
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Function GetHTMLBin(strURL)
On Error Resume Next
Dim objXMLHTTP, strReturn
Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", strURL, False
objXMLHTTP.Send Cstr(Rnd())
GetHTMLBin = objXMLHTTP.responseBody
Set objXMLHTTP = Nothing
End Function
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Function to convert binary data to text
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Function BinToText(varBinData, intDataSizeInBytes) ' as String
On Error Resume Next
Const adFldLong = &H00000080
Const adVarChar = 200
Set objRS = CreateObject("ADODB.Recordset")
objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
objRS.Open
objRS.AddNew
objRS.Fields("txt").AppendChunk varBinData
BinToText = objRS("txt").Value
objRS.Close
Set objRS = Nothing
End Function
Hoppas att den kan hjälpa dig!
