IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Petit problème sur un xpath


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 21
    Points
    21
    Par défaut Petit problème sur un xpath
    Bonjour tout le monde! J'ai appris ici même hier l'existence de xpath et je m'entraines un peu desus cependant la ca ne marche pas et j'ai essayez (beaucoup) de chose et ca n'a pas l'air de vouloir fonctionner je me demandais si vous n arriveriez pas a voir ou est mon erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    $store = array();
     
    foreach($response3 as $search)
    {
        $query = http_build_query(array('q' => $search, 'p' => 'qkey'));
        $url = "http://www.alexa.com/search?$query";
     
        libxml_use_internal_errors(true);
     
        $doc = new DOMDocument();
        $doc->loadHTMLFile($url);
     
        libxml_clear_errors();
     
        $xpath = new DOMXPath($doc);
        $items = $xpath->query('//p[@class="qindex"]');
     
        foreach($items as $item)
        {
            $var = str_replace(html_entity_decode(' ', null, 'utf-8'), '', trim($item->lastChild->nodeValue));
            sscanf($var, '%D', $store[$search][]);
        }
    }
     
    //jusque la ca fonctionnes mon store est bien un tableau associatif avec en [0] et [1] les données que je veux
     
     
    foreach($store as $search => $result)
    {
        $q=urlencode($search);
        $search_url="http://www.google.com/search?q=$q&hl=fr&tbo=1&tbs=ww:1";
     
     
     
        libxml_use_internal_errors(true);
     
        $doc = new DOMDocument();
        $doc->loadHTMLFile($url);
     
        libxml_clear_errors();
     
        $xpath = new DOMXPath($doc);
        $items = $xpath->query('//*[@id="resultStats"]');
      //  $store[$search][3]= $item;
     
       foreach($items as $item)
        {
     
             $text = filter_var($item->nodeValue, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
            sscanf($text, '%D', $store[$search][]);
        }
    }
     
    //cette partie du dessus ne fonctionne pas du tout j ai essayez plein de chose avec / sans for each etc bref j ai rien dans le  [3] je pense que ca viens du trim mon soucis
     
     
     
    //google api
    foreach($store as $search => $result)
      {
     
     
    $value2=urlencode($search);
     
    $url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$value2&hl=fr";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_REFERER, "http://www.blog.neptis.info/page_referer.php");
    $body = curl_exec($ch);
    curl_close($ch);
    $json = json_decode($body);
    $store[$search][4] = $json-> responseData-> cursor-> estimatedResultCount;
     
      }
    //cette partie fonctionne bien , c est l équivalent en utilisant l api que propose google mais malheuresement les résultats sont trèèèèèèèsss loin de la réalité

    J'ai bien séparé le code en trois partie (2 qui marchent une qui marche pas c'est indiqué dans les commentaires)

    Merci d'avance !
    Cordialement,
    Lomithrani

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ta pas pris la dernière version de mon code,
    et tu n'utilises pas l'API de google la ...

    si tu veux te faire la main sur xpath, test sur un page web/xml que tu crées toi même en local

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 21
    Points
    21
    Par défaut
    alors pour choper les xpath j ai trouver un truc sur firebug qui aide pas mal :p

    sinon ta version avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      $text = filter_var($item->nodeValue, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
            sscanf($text, '%D', $store[$search][]);
    fonctionne pas chez moi alors que l autre oui donc j ai garder l autre :p

    sinon la je ne fais pas appel a l api ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$value2&hl=fr";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_REFERER, "http://www.blog.neptis.info/page_referer.php");
    $body = curl_exec($ch);
    curl_close($ch);
    $json = json_decode($body);
    $store[$search][4] = $json-> responseData-> cursor-> estimatedResultCount;

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    non c'est pas l'API ca,
    l'API search c'est la : http://code.google.com/intl/fr/more/#google-search

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    non c'est pas l'API ca,
    l'API search c'est la : http://code.google.com/intl/fr/more/#google-search
    Merci , malheuresement 100 queries ca me suffira jamais. Tu veux bien m aiguiller sur mon xpath ? , j'aimerais bien trouvé mon erreur!

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Lomithrani Voir le message
    Merci , malheuresement 100 queries ca me suffira jamais. Tu veux bien m aiguiller sur mon xpath ? , j'aimerais bien trouvé mon erreur!
    y'a pas de limitation avec en AJAX
    tu dois utiliser cette API comme tout les site qui en propose une, si il y'a trop de trafique "clandestin" vers ton site, tu risque d’être blacklist par les différents sites

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 21
    Points
    21
    Par défaut
    c'est "clandestin" un loadhtml ? :o

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Lomithrani Voir le message
    c'est "clandestin" un loadhtml ? :o
    oui si les sites propose des api c'est pas pour rien, de plus que tu télécharge beaucoup de données par rapport au traitement, donc c'est pas optimisé, et tu pompes les information d'un site pour le mettre sur le tien (ça trouve pour faire de l'argent) sans leurs autorisation, c'est pas parce que tu as accès au information qu'elles t'appartiennent.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 21
    Points
    21
    Par défaut
    Alors comme je suis pas de mauvaise fois je suis allez faire des recherches

    je suis tomber sur la doc http://code.google.com/intl/fr/apis/...fonje_snippets en cherchant et j ai trouvé ca dans "java access"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // This example request includes an optional API key which you will need to
    // remove or replace with your own key.
    // Read more about why it's useful to have an API key.
    // The request also includes the userip parameter which provides the end
    // user's IP address. Doing so will help distinguish this legitimate
    // server-side traffic from traffic which doesn't come from an end-user.
    URL url = new URL(
        "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&"
        + "q=Paris%20Hilton&key=INSERT-YOUR-KEY&userip=USERS-IP-ADDRESS");
    URLConnection connection = url.openConnection();
    connection.addRequestProperty("Referer", /* Enter the URL of your site here */);
     
    String line;
    StringBuilder builder = new StringBuilder();
    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    while((line = reader.readLine()) != null) {
     builder.append(line);
    }
     
    JSONObject json = new JSONObject(builder.toString());
    // now have some fun with the results...
    et 2 ligne plus loin je suis tomber la dessus : ce qui est exactement mon code a 2 ligne prêt ^^

    De plus je ne les affichent pas je fais seulement un script qui a partir d'un mot clé me renvoi une liste de mot clés sur lequeul je fais des stats pour aider a choisir les bons mot clés a utiliser. Sinon si ce code est sur la doc google je pense avoir droit de l utiliser quand même non ? ils précisent pas de limite d éxécution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // This example request includes an optional API key which you will need to
    // remove or replace with your own key.
    // Read more about why it's useful to have an API key.
    // The request also includes the userip parameter which provides the end
    // user's IP address. Doing so will help distinguish this legitimate
    // server-side traffic from traffic which doesn't come from an end-user.
    $url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&"
        . "q=Paris%20Hilton&key=INSERT-YOUR-KEY&userip=USERS-IP-ADDRESS";
     
    // sendRequest
    // note how referer is set manually
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_REFERER, /* Enter the URL of your site here */);
    $body = curl_exec($ch);
    curl_close($ch);
     
    // now, process the JSON string
    $json = json_decode($body);
    // now have some fun with the results...

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    l'api ajax y'a pas de probleme, par contre pas besoin cURL, un file_get_contents suffit

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    l'api ajax y'a pas de probleme, par contre pas besoin cURL, un file_get_contents suffit
    Je te suis pas y a 2 min tu m'a dis que de cette façon j'avais une chance d'être blacklist si je faisait trop de requetes?

    tu parlais du loadhtml et les xpaths ?

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Lomithrani Voir le message
    Je te suis pas y a 2 min tu m'a dis que de cette façon j'avais une chance d'être blacklist si je faisait trop de requetes?

    tu parlais du loadhtml et les xpaths ?
    oui je parle du loadHTML sur : http://www.google.com/search?q=$q&hl=fr&tbo=1&tbs=ww:1

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 21
    Points
    21
    Par défaut
    ok dommage ... par ce que les résultats de l api sont genre 10 fois en deça de la réalité parfois et d'autre fois au dessus ... ( bref ont dirait que google aime pas lacher des chiffres pour les SEO )

Discussions similaires

  1. Aide pour petit problème sur bouton
    Par jeanfly dans le forum Flash
    Réponses: 3
    Dernier message: 14/05/2007, 16h25
  2. petit problème sur les listes chaînées
    Par poche dans le forum C
    Réponses: 14
    Dernier message: 19/03/2007, 16h53
  3. petit problème sur une drawgrid
    Par florette dans le forum Delphi
    Réponses: 2
    Dernier message: 26/05/2006, 09h41
  4. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo