Methode de capture de données

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Methode de capture de données

Message par Chris »

Je cherche une méthode pour capturer les infos des pages jaunes.

J'ai essayé d'après le code source de la page, c'est pas terrible.
(Vous n'avez qu'à faire afficher le code source d'une de leur page, vous allez comprendre. Rarement vu un foutoir pareil :mrgreen: )

Pour le moment, j'en suis à disséquer les données en me basant sur les balises, mais il doit y avoir une solution plus simple.
L'idéal, serait de sélectionner les données sur la page, mais ça, il faut le faire à la main. C'est long et pas pratique, d'autant que le webgadget
a un peu tendance à sélectionner là ou il a envie.

Donc, si éventuellement quelqu'un avait une astuce dans un fond de tiroir, je suis preneur.
J'ai jeté un œil sur le forum anglais, j'ai trouvé que dalle. (j'ai peut-être mal cherché, c'est possible.)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Methode de capture de données

Message par djes »

Pourquoi utiliser le webgadget? Sinon, infobel me semble plus adapté que les pages jaunes.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Methode de capture de données

Message par Backup »

perso pour le l'euro million
j'utilise ma petite fonction "Extract()":

http://www.purebasic.fr/french/viewtopi ... =6&t=11224

et ça marche pas trop mal :)

avantage , pas besoin de passer par le webgadget ;)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Methode de capture de données

Message par Chris »

djes a écrit :Pourquoi utiliser le webgadget? Sinon, infobel me semble plus adapté que les pages jaunes.
A part le webgadget, je ne vois pas trop quoi utiliser d'autre?
Il faut bien que je voie la page sur laquelle je me connecte, ne serait-ce que pour lui dire ce que je cherche.

Garage Duchmoll à TartempionVille, par exemple ou
Fabrication de chaussettes à ressort dans la Creuse

Pis c'est quoi, Infobel, d'abord? :lol:

PS: Je viens d'aller voir sur Infobel, j'y ai pas trouvé ma boite.
Je reste à PagesJaunes.

Dobro a écrit :perso pour le l'euro million
j'utilise ma petite fonction "Extract()":

viewtopic.php?f=6&t=11224

et ça marche pas trop mal :)

avantage , pas besoin de passer par le webgadget ;)
Bah oui, mais d'une part, je joue pas à l'EuroMignon, et d'autre part, le balisage des sources PagesJaune est un bordel monumental.
Le problème n'est pas de récupérer les balises et ce qu'il y a dedans, c'est de récupérer uniquement ce qui est utile.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Methode de capture de données

Message par Backup »

Chris a écrit : Le problème n'est pas de récupérer les balises et ce qu'il y a dedans, c'est de récupérer uniquement ce qui est utile.
t'es marrant toi , tu pose la question :
Je cherche une méthode pour capturer les infos des pages jaunes.
je te réponds, en te donnant une procedure qui permet de le faire

maintenant tu demande :
c'est de récupérer uniquement ce qui est utile.
haaaa? et c'est quoi ce qui est utile selon toi ?

parceque littéralement si je comprends ce que tu demande, c'est un K2000 qu'il te faut !! :roll:

une intelligence artificiel qui sache ce que TOI tu juge utile ou pas ....

t'es en forme :lol:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Methode de capture de données

Message par Chris »

Bah ce qui est utile, dans un annuaire, c'est les noms, les adresses, les n° de téléphone/fax/mobile, et en général, tout ce qui te permet de trouver les coordonnées d'une personne ou d'une société. :mrgreen:

Par contre, ce qui n'est pas utile, c'est les liens vers les pubs et les lignes qui font trois km dans ce genre là :

Code : Tout sélectionner

<a class="JS_PJ { pjtooltip :{dtanchor:'refba1'}} pjlienbrouille pjpopup aTag_INFO idTag_QQLR" href="#aHR0cDovL3d3dy5wYWdlc2phdW5lcy5mci90cm91dmVybGVzcHJvZmVzc2lvbm5lbHMvYWZmaWNoZXJRcWxyLmRvP3JlcXVldGVJRD0xMjk0OTkyODgyNDA0ODk4Mjgmc2VydmljZT1ZRVMmdmlzaXRvcklEPTE4OTEyOTQ4MDEwNzE2ODg1NCZpZFBvcnRhaWw9UEo=" rel="menubar=0,status=0,scrollbars=1,menubar=0,width=800,height=600"><img src="http://static.pagesjaunes.fr/trouverlesprofessionnels/static_4.3.5.4/images/qqlr_small.gif" /></a>
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Methode de capture de données

Message par Ar-S »

Ceci te permet d'afficher les résultats sur le site via ton navigateur. A la place du runprogram() tu peux faire un webgadget et extraire les données désirées de la source. Même si ça fait un gros trie, ça doit être faisable.

Code : Tout sélectionner

;Affiche résultats des Pages Blanches sur navigateur par défaut.
Enumeration
  #ARS
  #Ville
  #Nom
  #cherche
EndEnumeration

Procedure OpenWindow_ARS()
  If OpenWindow(#ARS, 450, 200, 318, 122, "Page Blanche", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    StringGadget(#Ville, 165, 25, 145, 25, "", #PB_String_LowerCase|#ES_CENTER)
    StringGadget(#Nom, 15, 25, 135, 25, "", #PB_String_LowerCase|#ES_CENTER)
    ButtonGadget(#cherche, 20, 80, 280, 30, "Cherche")
  EndIf
EndProcedure

OpenWindow_ARS()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #cherche
          Ville$=GetGadgetText(#Ville)
          Nom$=GetGadgetText(#Nom)
          
          If Ville$="" Or Nom$=""
            MessageRequester("Erreur","Vous devez remplir les 2 champs",#MB_ICONINFORMATION)
          Else
            URLsearch$="http://www.pagesjaunes.fr/pagesblanches/RecherchePagesBlanchesExpress.do?leveeAmbiguite=&listeIdLieux=&nom="+Nom$+"&prenom=&ou="+Ville$
            RunProgram(URLsearch$)
          EndIf

      EndSelect
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #ARS
          CloseWindow(#ARS)
          Break
      EndSelect
  EndSelect
ForEver
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Methode de capture de données

Message par Backup »

apparemment les annuaires sont blindées
je n'arrive même pas a une page contenant le résultat !

pour que mon systeme fonctionne , il me faut le code source contenant le résultat en clair
meme entre les balises....

ce n'est pas le cas sur les pages jaunes :?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Methode de capture de données

Message par Chris »

Pfffiiioouuuuu!!!!!!!!!!!!!

Ca y est, je crois que j'y suis arrivé! :?

M'a donné du mal, celui là! :twisted:

PS: C'est spécifique PagesJaunes, alors pas la peine de me dire "Ca marche pas sur tel ou tel site!
Même les pages blanches, je sais pas si ça marche. :wink:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Methode de capture de données

Message par Chris »

J'ai encore une question sur le même thème.

Dans mes captures de code source, j'ai des caractères bizarres, genre àèé à la place des caractères accentués
Quand je colle le code dans Notepad ++, si je ré-encode en UTF8, les caractères accentués s'affichent normalement.

Pas moyen de trouver une table de correspondance sur le net.
J'en ai trouvé une pour les &Agrave;,&Aacute;, etc... mais rien pour le reste.
Je tombe sur des sites avec des types qui te balancent de grandes théories dont je me contrefous, mais pas une table.

Personne aurait ça, dans un fond de tiroir?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Methode de capture de données

Message par Backup »

fais toi un convertisseur

un truc genre :

Code : Tout sélectionner

;convertisseur uft8
; by Dobro
Enumeration
  #file_o
  #file
EndEnumeration

file$=OpenFileRequester("charger un fichier txt","c:\","*.txt",1)

If ReadFile(#file_o, file$)  ; Si le fichier peut être lu , on continue...
  OpenFile(#file,"toto.txt")
  While Eof(#file_o) = 0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
    a$=ReadString(#file_o)      ; Affiche ligne par ligne le contenu du fichier
    WriteStringN(#file,a$,#PB_UTF8) ; la phrase convertie
  Wend
  CloseFile(#file)
  CloseFile(#file_o)               ; Ferme le fichier précédemment ouvert
  
Else
  MessageRequester("Information","Impossible d'ouvrir le fichier!")
EndIf

Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Methode de capture de données

Message par Chris »

J'y avais bien pensé, mais je fais les changements et j'extrais les données directement dans la chaine qui est en mémoire.

Mais je me suis débrouillé autrement.
J'ai fait une boucle qui place les caractères de 127 à 254 dans une chaine que j'ai fait afficher dans le débuggueur.
Je l'ai collée en Datas dans mon prog
J'ai ensuite collé cette chaine dans notepad ++ et je l'ai convertie en UTF8 et j'ai collé le résultat en Datas.

Un ReplaceString() en lisant les Datas, et hop : Ça marche nickel 8)
Faut ruser, dans la vie. :mrgreen:

Mais merci pour la réponse. :wink:
Répondre