Via microsoft XMLHTTP hämtar jag hem en html-kod, som läggs ner till en vanlig textfil. I den här html-koden finns det information som jag vill lägga in i en databas. Vilket är det enklaste och snabbaste sättet att sortera ut informationen som jag vill åt, och hur skall jag gå tillväga? :e
Dela upp och lägga in!
13 svar · 364 visningar · startad av fredrik99
OK! :e
Jag har kollat runt lite, och fixat lite, men det vill inte funka :(
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", http, False
objHTTP.Send
strHTML=objHTTP.responseText
Set objHTTP = Nothing
Set objRegExp = New regexp
objRegExp.Global = False
objRegExp.IgnoreCase = True
objRegExp.Pattern = "<TABLE BORDER=""0"" cellpadding=""1"" cellspacing=""0"" width=""568"" ID=""Table4"">(.*?)</TABLE>"
Set myMatches = objRegExp.Execute( strHTML )
For each item in myMatches
Response.Write item.value
Next
Med den koden får jag endast en blank skärm :(
Hämtar information från bifogad fil (plockat bort oviktiga rader)!
http://member.webforum.nu/447/om.txt
Ingen som vet? :l
Sådär ja :e
Nu är filen nerbantad ganska mycket :) (bifogad fil)
Hur skall jag gå tillväga för att föra in informationen i databasen? (rätt information i rätt fält ovs)
Fältexempel:
plac;klass;namn;klubb;poäng;upp/ner
Hur ser koden ut hittils?
Om du gör såhär så får man ju ut hejsan hoppsan.
Kolla att du verkligen får något med XMLHTTP
<%
strHTML = "<TABLE BORDER=""0"" cellpadding=""1"" cellspacing=""0"" width=""568"" ID=""Table4"">Hejdsan hoppsan</TABLE>"
Set objRegExp = New regexp
objRegExp.Global = False
objRegExp.IgnoreCase = True
objRegExp.Pattern = "<TABLE BORDER=""0"" cellpadding=""1"" cellspacing=""0"" width=""568"" ID=""Table4"">(.*?)</TABLE>"
Set myMatches = objRegExp.Execute( strHTML )
For each item in myMatches
Response.Write item.value
Next
%>
Om du nu kör ut det du visar med "For each.." Hur ser då varje bit ut som skrivs ut?
Det du måste hitta är ett mönster att gå efter, typ att namnet kommer alltid si och så många tecken in i strängen osv.
Nickemannen >> Jag får ut 'Hejdsan hoppsan' utan några problem :)
Slänger in den "fina" koden också :e Har säkert gjort det mer komplicerat än vad det är :)
<%
function BinToText(varBinData, intDataSizeInBytes)
const adFldLong = 128
const adVarChar = 200
set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
objRS.Open
objRS.AddNew
objRS.Fields("txt").AppendChunk(varBinData)
tmp = objRS("txt").Value
objRS.Close
BinToText = tmp
end function
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://127.0.0.1/om.txt", False
objHTTP.Send
strHTML = BinToText(objHTTP.responseBody,35000)
Set objHTTP = Nothing
Set objRegExp = New regexp
objRegExp.Global = False
objRegExp.IgnoreCase = True
objRegExp.Pattern = "<TABLE BORDER=""0"" cellpadding=""1"" cellspacing=""0"" width=""568"" ID=""Table4"">(.*?)</TABLE>"
Set myMatches = objRegExp.Execute( strHTML1 )
For each item in myMatches
strhtmls = item.value
Next
strReplace = ""
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "<TABLE BORDER=""0"" cellpadding=""1"" cellspacing=""0"" width=""568"" ID=""Table4"">"
replacestring = objRegExp.Replace(strHTMLs, strReplace)
Set objRegExp = Nothing
strHTML1 = replacestring
strReplace1 = ""
Set objRegExp1 = New regexp
objRegExp1.Global = true
objRegExp1.IgnoreCase = true
objRegExp1.Pattern = "<tr(.*)>"
replacestring1 = objRegExp1.Replace(strHTML1, strReplace1)
Set objRegExp1 = Nothing
strHTML2 = replacestring1
strReplace2 = ""
Set objRegExp2 = New regexp
objRegExp2.Global = true
objRegExp2.IgnoreCase = true
objRegExp2.Pattern = "</tr(.*)>"
replacestring2 = objRegExp2.Replace(strHTML2, strReplace2)
Set objRegExp2 = Nothing
strHTML3 = replacestring2
strReplace3 = ""
Set objRegExp3 = New regexp
objRegExp3.Global = true
objRegExp3.IgnoreCase = true
objRegExp3.Pattern = "<td(.?)>"
replacestring3 = objRegExp3.Replace(strHTML3, strReplace3)
Set objRegExp3 = Nothing
strHTML4 = replacestring3
strReplace4 = ";"
Set objRegExp4 = New regexp
objRegExp4.Global = true
objRegExp4.IgnoreCase = true
objRegExp4.Pattern = "</td>"
replacestring4 = objRegExp4.Replace(strHTML4, strReplace4)
Set objRegExp4 = Nothing
str=replacestring4
set r = new regexp
r.ignorecase = true
r.global = true
r.pattern = "<a.*?>(.*?)<\/a>"
replacestring5 = r.replace(str, "$1")
strHTML6 = replacestring5
strReplace6 = ";"
Set objRegExp6 = New regexp
objRegExp6.Global = true
objRegExp6.IgnoreCase = true
objRegExp6.Pattern = "<IMG SRC=(.*)"
replacestring6 = objRegExp6.Replace(strHTML6, strReplace6)
Set objRegExp6 = Nothing
strHTML7 = replacestring6
strReplace7 = ""
Set objRegExp7 = New regexp
objRegExp7.Global = true
objRegExp7.IgnoreCase = true
objRegExp7.Pattern = "</FONT>"
replacestring7 = objRegExp7.Replace(strHTML7, strReplace7)
Set objRegExp7 = Nothing
strHTML8 = replacestring7
strReplace8 = ""
Set objRegExp8 = New regexp
objRegExp8.Global = true
objRegExp8.IgnoreCase = true
objRegExp8.Pattern = "<TD Class(.*)"
replacestring8 = objRegExp8.Replace(strHTML8, strReplace8)
Set objRegExp8 = Nothing
strHTML9 = replacestring8
strReplace9 = ""
Set objRegExp9 = New regexp
objRegExp9.Global = true
objRegExp9.IgnoreCase = true
objRegExp9.Pattern = "</table>"
replacestring9 = objRegExp9.Replace(strHTML9, strReplace9)
Set objRegExp9 = Nothing
'response.write replacestring9
%>
Testa att skriv ut det svaret du får från din server och se om det kommer något överhuvud taget till din sträng.
Jag har beskärigt koden manuellt så att det bara var koden mellan <tabel> … </table> därefter fixade scriptet resten.
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", http, False
objHTTP.Send
strHTML=objHTTP.responseText
Set objHTTP = Nothing
Set objRegExp = New regexp
objRegExp.Global = False
objRegExp.IgnoreCase = True
objRegExp.Pattern = "<TABLE BORDER=""0"" cellpadding=""1"" cellspacing=""0"" width=""568"" ID=""Table4"">(.*?)</TABLE>"
Set myMatches = objRegExp.Execute( strHTML )
For each item in myMatches
Response.Write item.value
Next
Den kod-biten funkar fortfarande inte som den ska :( Den skriver inte ut något i item.value.
Kanske enklare om jag skriver så här :)
Jag vill ta bort ALLT före
rad: 307 <TABLE id="Table4" cellSpacing="0" cellPadding="1" width="568" border="0">
och allt efter
rad: 447 </table>
I den bifogade filen ... :l