webForumDet fria alternativet

Dela upp och lägga in!

ASP

13 svar · 364 visningar · startad av fredrik99

Medlem sedan maj 2000426 inlägg
Frågan#1

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

Medlem sedan mars 20015 287 inlägg
#2

XMLHTTP och RegExp

XMLHTTP

Medlem sedan maj 2000426 inlägg
#3

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

Medlem sedan maj 2000426 inlägg
#4

Ingen som vet? :l

Medlem sedan maj 2000426 inlägg
#5

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

Medlem sedan mars 20015 287 inlägg
#6

Hur ser koden ut hittils?

Medlem sedan aug. 20003 575 inlägg
#7

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
%>

Medlem sedan mars 20015 287 inlägg
#8

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.

Medlem sedan maj 2000426 inlägg
#9

Nickemannen >> Jag får ut 'Hejdsan hoppsan' utan några problem :)

Medlem sedan maj 2000426 inlägg
#10

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

%>
Medlem sedan aug. 20003 575 inlägg
#11

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.

Medlem sedan maj 2000426 inlägg
#12

Kolla min bifogade fil :)

http://www.webforum.nu/attachment.php?s=&postid=578784

Medlem sedan maj 2000426 inlägg
#13

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.

Medlem sedan maj 2000426 inlägg
#14

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

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)