Moteur de recherche ?

Moteur de recherche ? - PHP - Programmation

Marsh Posté le 27-05-2008 à 14:41:54    

Bonjour,
 
j'aimerais créer un script qui me permette dentrer un mot clé dans un moteur de recherche et de recupéré les informations de la page obtenu.
si quelqun peut m'aider ;)

Reply

Marsh Posté le 27-05-2008 à 14:41:54   

Reply

Marsh Posté le 27-05-2008 à 14:45:44    

Code :
  1. <?php echo file_get_contents('http://www.google.fr/search?q=keyword'); ?>


Te reste plus qu'à parser la réponse!


Message édité par dwogsi le 27-05-2008 à 14:48:54

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 27-05-2008 à 14:46:38    

ok merci d'avoir été rapide ;)

Reply

Marsh Posté le 27-05-2008 à 16:26:09    

aphelion a écrit :

ok merci d'avoir été rapide ;)


il faut bien sur que le get_file_contents autorise les urls


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 27-05-2008 à 17:11:30    

ben pour le moment ca marche, mais mon seule souci c'est que je n'arrive pas a filtrer les informations, car la plupart du text obtenue est du HTML.

Reply

Marsh Posté le 27-05-2008 à 17:19:17    

aphelion a écrit :

car la plupart du text obtenue est du HTML.

oui forcément
 
donc tu peux :
- parser le résultat (avec simple dom par exemple)
- ou utiliser l'API de google, ou d'un autre moteur

Reply

Marsh Posté le 27-05-2008 à 20:52:39    

Citation :


oui forcément
 
donc tu peux :
- parser le résultat (avec simple dom par exemple)
- ou utiliser l'API de google, ou d'un autre moteur  


 
ben, j'ai utiliser la fonction strip_tags ($string); qui me retire toute les balises HTML.
maintenant plus qu'a utilisé des regex pour filtrer les URL (vu que c'est ce que je veux)
 

Code :
  1. #http:\/\/((w{3}\.)?).+\.([a-z]{2,3})$#


 
mais apparement j'aurai une faute dans ma synthaxe car quand je veux afficher le tableau, ben ca m'affiche rien ^^

Reply

Marsh Posté le 27-05-2008 à 23:11:46    

Voila après 2h de réflexion,
je vous donne ma regex pour scanner des page susceptible d'être des liens URL.
 

Code :
  1. '`((http://)?(w{3}\.)?[a-z|0-9|\.|_|-]{1,100}\.[a-z]{2,4})|(http://(\.?[0-9]{1,3})*)`i'


 
il scan aussi bien les adresse IP que les page sans "http://" ou sans les www.
 
Mais, on obtient que les noms de domaine avec ce genre de regex, si vous voulez m'aider a la pofiner un peu c'est pas de refus ;)

Reply

Marsh Posté le 28-05-2008 à 09:11:38    

te casse pas la tête avec une regexp, utilise dom

Reply

Marsh Posté le 28-05-2008 à 15:37:51    

ben trop tard ^^ mais je suis curieux de savoir ce qu'est DOM. ca fait quoi  ?

Reply

Marsh Posté le 28-05-2008 à 15:37:51   

Reply

Marsh Posté le 28-05-2008 à 15:46:37    

Reply

Marsh Posté le 29-05-2008 à 10:52:11    

tu sai je suis un peu débutant, et peut etre un peu car j'ai rien compri sur tes site xD si t'avais un lien vers un cours compréhensible ou un bref exemple d'utilisation je comprendrais mieux ^^

Reply

Marsh Posté le 29-05-2008 à 15:09:08    

aphelion a écrit :

tu sai je suis un peu débutant, et peut etre un peu car j'ai rien compri sur tes site xD si t'avais un lien vers un cours compréhensible ou un bref exemple d'utilisation je comprendrais mieux ^^


Et bien par exemple, l'url http://www.google.fr/search?q=keyword contient le div <div id="res" style="padding-top: 11px; min-width: 500px;">
Ce div contient les résultats de la recherche.
Donc tu fais (en javascript, mais il existe des équivalents PHP)

Code :
  1. reponses=document.getElementById('res');


Et après, en fonction de ce que tu cherches, tu te balades dans l'arborescence XML :

Code :
  1. var liens=div.getElementsByTagName('a');
  2. var urls=new Array();
  3. for(var i=0;i<liens.length;i++){
  4.   if(liens[i].className=='l')
  5.     urls.push(liens[i].href)
  6. }


Te donnera un tableau qui contiendra tous les urls des liens ayant un attribut class="l"
Tu peux aussi te balader avec des trucs de ce genre :
a=div.childNodes[5];
childNodes étant le tableau de tous les éléments fils.
ou b=div.parentNode;
 
En fait, il y a énormément de possibilités pour parcourir du XML avec le DOM ...
 
http://fr.selfhtml.org/javascript/objets/node.htm en javascript
http://fr.php.net/manual/en/class.domnode.php en PHP
 
Par exemple en PHP

Code :
  1. $html=file_get_contents('http://www.google.fr/search?q=keyword');
  2. $dom=new DOMDocument();
  3. $dom->loadHTML($html);
  4. $resultDiv=$dom->getElementById('res');
  5. $liens=$resultDiv->getElementsByTagName('a');
  6. foreach($liens as $lien){
  7.  if($lien->attributes->getNamedItem('class')=='l')
  8.    $urls[]=$lien->attributes->getNamedItem('href');
  9. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed