READ url :: ne prends pas ma variable
akira15-Dec-2006/16:24:53+1:00
Recoucou

La notice dit que pour charger le contenu HTML d'une url on doit procéder comme ceci :

codeHtml: read http://labas.fr


Mais quand je fais
; myUrl: read join mysql://root@localhost/base? reqUrl
codeHtml: read myUrl


ca passe pas. Je suis en train de me demander s'il me faut pas caster la variable dans un type precis ( string url ? )
ou s'il ne faut pas un raffinement sur ma requete et/ou après la requete.
akira15-Dec-2006/16:40:26+1:00
Erreur signalée par la console ;
Access Error: Invalid port spec: http://www.grosbill.com/catalogue.shtml


Si vous me cherchez je suis dans la notice
coccinelle15-Dec-2006/16:53:53+1:00
Probablement que ceci fonctionne :
codeHtml: read to-url myUrl
akira15-Dec-2006/17:24:38+1:00
Non coccinelle ca passe pas.
Script Error: Invalid argument: http://www.grosbillou.fr
** Where: to-url
** Near: to url! :value
Un petit tour dans la console avec "help to-" : fichtre y a du monde a retenir...
akira15-Dec-2006/17:32:13+1:00
Je voulais preciser que le resultat de ma requete myUrl me renvoie dans la console ( peut etre pas un string ? ) => http://labas.fr
akira15-Dec-2006/18:02:02+1:00
Ca ne viendrait pas du type de retour de la requete SQL ?
Ce type qui ne serait pas un string ?

Dans ma requete je vais au plus pres en ne prenant qu'une cellule d'un row ( SELECT ID FROM TABLE ). Je ne prend pas tout le row ou un bloc de row.
...
coccinelle15-Dec-2006/19:21:10+1:00
Fait un probe de ta variable, tu verras vraiment ce qu'elle est (probablement un block!)
akira15-Dec-2006/20:01:04+1:00
Bingo coccinelle

2 crochets * 2 + ""

[["http://www.labas.fr"]]

Je cherche une fonction pour "de-tableau-iser" ma variable
peut etre avec first
En fait je sais pas trop pour le moment
coccinelle15-Dec-2006/21:46:35+1:00
C'est simple, c'est un bloc imbriqué dans un autre. En fait le protocol renvoie un bloc contenant un bloc pour chaque ligne.

First resultat te donnera un bloc contenant la première ligne. first first résultat te donner ta chaine contenant l'url.
codeHtml: read to-url first first myUrl
akira16-Dec-2006/1:49:59+1:00


YES

Merci coccinelle ca fonctionne
J'aurais appris l'existence de pas mal de fonctions au passage.
Ca servira probablement plus tard. Quant à la solution tu me l'as donnée il ne reste plus qu'a l'assembler

a+
codeHtml: read to-url first first varUrl
akira16-Dec-2006/5:01:35+1:00
Par contre coccinelle je ne sais toujours pas si codeHtml me renvoie un string ou un tableau ou un ensemble de ligne

J'aimerais qu'il me stocke le tout dans une seule variable string avec suppression de tous les caractères CRLF ( retours chariots tabulation.

Dans le but d'obtenir un "enorme string"

A+
coccinelle16-Dec-2006/9:17:05+1:00
N'hésite pas à utiliser la fonction probe, elle te montre ce que contient ta variable.

Read renvoie en général un string mais cela dépend du protocole. C'est le cas du protocol html: mais ce n'est pas le cas pour mysql:

En utilisant le rafinement /lines (read/lines ...) tu obtiendra un bloc contenant un string par ligne.

Tu peux aussi utiliser load/markup qui te retournera un bloc contenant un ensemble de tag! et de string! C'est utile si tu t'intéresse au tag dans l'html.

A toi de voir ce qui te convient le mieux.

Sinon pour supprimer tous les retour chariot et tabulation dans une chaine, le plus rapide c'est ceci :
char-to-remove: charset "^-^M^/"
parse the-string [any [s: char-to-remove (remove s) | skip]]
akira16-Dec-2006/11:00:18+1:00
Merci coccinelle de ton aide mais cela ne fonctionne pas comme je l'attends.

J'aitoujours mes retours chariots
  <tr>

    <td width="1" bgcolor="#000000" class="tahoma_1"> </td>

    <td valign="top" >  <br>    <table width="97%"  border="0" align="center" cellpadding="0" cellspacing="0" class="tahoma_gf" valign="top" >
      <tr>
          <td width="48%" class="tahoma_cat_titre_13_orange"><strong>Composants informatiques
          </strong></td>
        <td width="4%"> </td>
          <td width="48%" class="tahoma_cat_titre_13_orange"><strong>cado
            bouznif</strong></td>
        </tr>


En php je résolvais par ceci :
$src = ereg_replace("\r",'',$src);
$src = ereg_replace("\r\n",'',$src);
$src = ereg_replace("\n",'',$src);
$src = ereg_replace("\t",'',$src);
Comme ceci tout etait vraiment collé ( ilne restait que des espaces en fait )
coccinelle16-Dec-2006/11:43:07+1:00
Je ne vois pas où est le problème.

Par exemple :
>> char-to-remove: charset "^-^M^/"
== make bitset! #{
0026000000000000000000000000000000000000000000000000000000000000
}
>> r: read http://www.rebol.com
== {<html>
<head>
<META NAME="Description" CONTENT="Lightweight distributed computing, collaboration, and progr
amming systems for t...
>> parse r [any [s: char-to-remove (remove s) | skip]]
== true
>> r
== {<html><head><META NAME="Description" CONTENT="Lightweight distributed computing, collabor
ation, and programming systems for the...
>>
montre que l'effet voulu est obtenu.
akira16-Dec-2006/11:50:03+1:00
Merci coccinelle je vais réessayer encore et te montre après ce que j'obtiens
akira16-Dec-2006/11:58:37+1:00
AJOUT : en fin d'aprés midi car je dois m'absenter ; à tout à l'heure
akira16-Dec-2006/14:36:34+1:00
Mince c quand même surprenant :-=

Je ne prends pas le site rebol.com parcequ'il est déjà concaténé

Mais si je prends le site de framasoft :
htmlUrlMap: read http://www.framasoft.net/
          print "AVANT"
          print htmlUrlMap
          char-to-remove: charset "^-^M^/"
          parse htmlUrlMap [any [s: char-to-remove (remove s) | skip]]
          print "APRES"
          print htmlUrlMap
          print "fin"


Tu la vois mon étourderie ? Comprends pas pour le moment.
coccinelle16-Dec-2006/18:15:19+1:00
Je vois surtout mon étourderie. Ca c'est mieux :
parse htmlUrlMap [any [s: char-to-remove (remove s) :s | skip]]
akira17-Dec-2006/3:11:31+1:00
yES ! On dirait matrix qui defile

Maintenant il faut que je supprime les espaces entres > ( balise fermante ) et < ( balise qui ouvre )

Après terminé j'ai plus qu'à me concentrer sur les PARSE

Merci de ton aide coccinelle
akira17-Dec-2006/4:43:59+1:00
Avant de me coucher j'ai tenté plusieurs combinaisons ( incorrectes bien entendu ) que je livre ici :
htmlUrlMap: read http://www.framasoft.net/
          ;print "AVANT"
          ;print htmlUrlMap
          char-to-remove: charset "^-^M^/"
          char-to-remove2: charset " "
          parse htmlUrlMap [any [s: char-to-remove (remove s) :s | skip]]
          
          ; presque bon sauf qu'il ne prend la règle entre ">" et "<"
          parse/all htmlUrlMap [any [t: char-to-remove2 (remove t) :t | skip] ">" copy r to "<" (remove r) :r | skip]
          
          ; autres essais
          
          ;parse htmlUrlMap [any [s: char-to-remove2 (remove s) :s | skip]]
          ;parse/all htmlUrlMap [ any ">" to "<" [ t: char-to-remove2 ( remove t ) :t | skip ] ]
          ;parse/all htmlUrlMap [ ">" to "<" (trim) | skip ]
          ;parse/all htmlUrlMap [any [t: " " (remove t) :t | skip [ parse/all ">" to "<" (remove) ] ] ]
          ;parse/all htmlUrlMap [ ">" remove/all char-to-remove2 to "<" ]
          ;parse/all htmlUrlMap [">" trim to "<"]
          print htmlUrlMap
Demain sera un autre jour...
coccinelle17-Dec-2006/12:24:32+1:00
char-to-remove: charset "^-^M^/"
space-to-remove: charset " ^-^M^/"
parse htmlUrlMap [any [
    ">" s: some space-to-remove e: "<" (print "><" remove/part s e) :s
|
    s: char-to-remove (remove s) :s
|
    skip
]]

akira17-Dec-2006/12:58:53+1:00
pro-di-gieux !
Tu me laisses sans voix. J'étais pas près de trouver aujourd'hui.

Bon dimanche
coccinelle17-Dec-2006/13:47:07+1:00
J'ai un conseil important à te donner, si tu veux y arriver en Rebol, oublie un peu PHP.

Surtout, ne cherche pas à faire les choses en Rebol de la même manière que tu le fais en PHP. Il faut que tu identifies ce que tu veux faire, puis chercher comment le faire en Rebol.

Par exemple, la suppression des tab et crlf, tu le faisais par quatre replace, en Rebol tu peux aussi le faire par quatre replace mais aussi comme je te l'ai suggéré, avec parse et remove de manière très efficace.

Si tu cherches à imiter PHP avec Rebol, tu n'exploiteras pas la puissance de Rebol et tu ne verras pas ce qui le différencie de PHP.

Il faut aussi que tu comprennes qu'en Rebol, la signification d'un mot varie en fonction de son context.

Par exemple, skip dans un script est une fonction qui permet de se déplacer dans une série. Par contre skip dans le dialect de parsing saute un élément.

Rien ne m'empêche de créer un dialect où skip a un autre signification, par exemple un dialect d'animation d'image ou skip ferait sauter l'image en l'air.

C'est pourquoi, je te conseille de lire un peu la documentation de Rebol sinon tu vas tatonner jusqu'à en être dégouté.
akira17-Dec-2006/19:15:54+1:00
Je me remets en question coccinelle et je promets de lire un peu de documentation tous les jours.

Mais il faut me laisser plusieurs semaines d'essais divers ( = post dans le forum ) . Je débute et ai vraiment envie de finir mon appli perso.

Je n'ambitionne pas tant que ca, mon reve avec mon ordi et rebol , c'est juste de surveiller des pages internet , de les parser , de stocker pile poile les infos voulues ( pas le html complet ) - pour me fabriquer des pages type RSS automatiquement.

Je cherche juste à m'emanciper du "surf sur internet à grand coup de clic clic" afin de gagner du temps par la suite.
Gagner énormément de temps...

Je regrette tout de même de ne pas avoir mordu sur rebol quand j'en ai entendu parler à l'époque il y a plus de 2 ans.

Mais si c'est le prix à payer... Me voila, je suis pas encore dégouté et plutôt satisfait d'avoir enfin écouté mes instincts et franchi le pas. Heureux même de parler à des passionnés prêts à aider et encourager.

A+
Philippe18-Dec-2006/10:02:40+1:00
Salut, Akira,

Si les pages que tu surveilles possédent un lien RSS, tu peux aussi voir la page http://www.rebol.net/article/0120.html du blog de Carl, avec le lien vers le RSS Reader de Piotr Gapinsky, qui est très accessible et te donneras peut-être des idées.



===Philippe

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2