Lire une ligne précise sur une page html
#1
J'ai un petit souci:

Je sais faire lire une page web a mon egg, cependant il lit toujours la premiere.
Ce que je voudrais c'est lui donné la ligne a lire, et non pas automatiquement la premiere ...

Voila le code que j'utilise:

Code :
bind pub mn !test pub:test
proc pub:test { nick uhost handle chan arg } {
set lsl(avant) "l'url du site"
set key [http::geturl $lsl(avant)]
set line [http::data $key]
putserv "PRIVMSG $chan : \00302,00$line"
}

Merci d'avance : )
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir
#2
C'est normal, ta variable $line contient en fait l'intégralité de ta source html, tu ne vois que la première ligne car le caractère de nouvelle ligne (\n) est interprété.
Donc, il te faut transformer ta page html en un tableau de lignes pour pouvoir aller lire la bonne:
Code :
bind pub mn !test pub:test
proc pub:test { nick uhost handle chan arg } {
   set lsl(avant) "l'url du site"
   set key [http::geturl $lsl(avant)]
   set arrlines [split [http::data $key] "\n"]
   incr arg -1
   putserv "PRIVMSG $chan : \00302,00$arrlines($arg)"
}
Je pars bien sur du principe que $arg est le N° de la ligne que tu veux lire.
Répondre
#3
Je test et je te dis si c'est mon bonheur ! Merci : )

(la classe ton nom de domaine ^^Wink
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir
#4
Je n'arrive pas a avoir ce que je veux.

L'url ou l'egg va chercher des infos: ici

Je veux pouvoir recuperer les 10 lignes ensemble ou separement, ou sont les titres, mais a la demande.

Merci d'avance CrazyCat : )
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir
#5
ah oui, le code html est mal foutu, difficile à parser...
Il faudrait que tu puisses modifier le générateur pour ajouter un caractère particulier devant chaque ligne intéressante.
Sinon, il faut aller récupérer une chaine particulière (<b>Song Title</b> par exemple), et faire une regexp qui permette de récupèrer les autres lignes, du genre "<td>(*)<\/td>"...

J'essayerais de voir ça demain Smile
Répondre
#6
j'ai toujours pas reussi Sad
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir
#7
Le plus simple que je vois, c'est de traiter ta chaine ainsi ($webpage contient ta source)
Code :
# on récupère ce qui est entre "<b>Song Title</b></td></tr>" et le premier "</table>" situé après
regsub -all {.*<b>Song Title</b></td></tr>(.*)</table>} $webpage "\\1" webpage
# on sépare sur les "</tr>"
foreach line [split $webpage "</tr>"] {
   # on supprime les balises HTML
   regsub -all {<[^>]>} $line "" line
   # on affiche
   putserv "PRIVMSG $chan :$line"
}
Bon, c'est fait à l'arrache, je ne promet rien Smile
Répondre
#8
j'vais m'en débrouiller, merci : )
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté