webForumDet fria alternativet

xmlhttp/Regexp

ASP

9 svar · 253 visningar · startad av SteveP

Medlem sedan mars 2003772 inlägg
Frågan#1

Jag har en liten fundering angående hämtning av info från andra sidor.

Jag vet hur man plockar ut länkar etc från andra sidor, men hur gör man och går det att plocka ut specifika länkar på en sida?

T ex en sida som har 50 länkar på första sidan men jag vill enbart plocka ut dom länkarna som ligger under en rubrik som heter Articles.

Exempel

Headlines

<a href="foo">Rubrik</a>
<a href="foo">Rubrik</a>
<a href="foo">Rubrik</a>

Articles

<a href="foo">Rubrik</a>
<a href="foo">Rubrik</a>
<a href="foo">Rubrik</a>

Info

<a href="foo">Rubrik</a>
<a href="foo">Rubrik</a>
<a href="foo">Rubrik</a>

Osså finns det en hel del andra länkar utspridda på samma sida.
Hur gör jag då för att enbart plocka dom länkarna som ligger under Articles?

Medlem sedan mars 20015 287 inlägg
#2

Hämta först det partiet som ligger mellan Articles samt Info och plocka sen länkarna ur det området.

Söker du på xmlhttp samt Regexp lär du hitta exempel om inte annat.

Medlem sedan mars 2003772 inlägg
#3

Jag får inte till den riktigt..
Hur är det när man söker mellan 2 vanliga texter?

Detta fungerar endast om texten ligger på samma rad
objRegExp.pattern = "(ord1)(.*?)(ord2)"

men hur gör man för att söka mellan 2 ord där det första ordet är högst upp på sidan och det andra kanske mitt i?

objRegExp.pattern = "(Articles)(<a.*?>*?</a>)(Conferences)"

Jag försöker alltså plocka ur Artiklarna på http://www.asp.net/

Medlem sedan mars 2003772 inlägg
#4

Nu får jag ut allt mellan det två orden, men hur gör jag för att enbart få ut allt inom <a till </a> inom dom 2 orden?

Jag vill alltså slå ihop dessa 2
objRegExp.pattern = "(ord1/*[\d\D]*?ord2)"

objRegExp.pattern = "<a.*?>*?</a>"
Medlem sedan mars 2003772 inlägg
#5

Man kanske kan köra en ObjRegExp på den texten man fick ut i den första?
Men då har jag ett problem

url = "http://www.asp.net"
Set xmlhttp = server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open "GET", url, False
xmlhttp.send ""
myString = xmlhttp.responsetext
Set xmlhttp = nothing

Set objRegExp = new RegExp

objRegExp.pattern = "(articles*[\d\D]*conferences)"

objRegExp.IgnoreCase = True
objRegExp.Global = True

Set myMatches = objRegExp.Execute(myString)
Set objRegExp = nothing

'Nästa RegExp som ska dra ut info från den förra RegExp'n

'Här e problemet ####
[b]myString2 = "Här vill jag ha in all text som myMatches returnerade från förra objRegExp"[/b]

Set objRegExp2 = New RegExp

objRegExp2.pattern = "<a.*?>*?</a>"

objRegExp2.IgnoreCase = True
objRegExp2.Global = True

Set myMatches2 = objRegExp2.Execute(myString2)

cnt = 1
For each item In myMatches2
Response.Write "<B>" & item.value & "</B><BR>"
cnt = cnt + 1
Next
Medlem sedan mars 20015 287 inlägg
#6

Om du är "säker" att du bara får en träff så behöver du ju inte loopa ut den raden utan bara använda dig av den första (och enda) posten:

myString2 = myMatches(0)

Medlem sedan mars 2003772 inlägg
#7

Nej jag får en massa träffar, ca 10 olika länkar med en massa text och bilder runt som jag vill få bort med den andra regexp'n.. därför måste jag stoppa in allt som myMatches returnerar i myString2

Medlem sedan mars 2003772 inlägg
#8

Vänta nu, detdär fungerade.. jag som missförstod dig!
Tack!

Medlem sedan mars 20015 287 inlägg
#9

Np. Bra jobbat med det där scriptet tycker jag btw.

Medlem sedan mars 2003772 inlägg
#10

Oh tack :r

Mycket tack vare din hjälp också :birp

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
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)