2016-05-01 1 views
1

J'essaye de faire un script qui vérifie si quelqu'un a été à cette école, en utilisant leur alumni directory. (Vous pouvez utiliser le nom de François Hollande (actuel président français) pour voir comment il se comporte)Modifier le code html/javascript avec httr

Pour autant que je sache (pour le bouton "nom") j'ai besoin d'accéder à cette partie du code HTML:

<div class="annuaireRecherche-v2" style=""> 
    <span>Nom</span> 
    <div class="select2-container select2-allowclear autocomplete" id="s2id_PersonneNom" style="min-width: 0;"> 
    <a href="javascript:void(0)" class="select2-choice" tabindex="-1"> 
     <span class="select2-chosen" id="select2-chosen-3">Derez</span> 
     <abbr class="select2-search-choice-close"></abbr> 
     <span class="select2-arrow" role="presentation"> 
     <b role="presentation"></b> 
     </span> 
    </a> 
    <label for="s2id_autogen3" class="select2-offscreen"></label> 
    <input class="select2-focusser select2-offscreen" type="text" aria-haspopup="true" role="button" aria-labelledby="select2-chosen-3" id="s2id_autogen3" tabindex="0"> 
    </div> 
    <input type="hidden" name="PersonneNom" id="PersonneNom" class="autocomplete" style="min-width: 0px; display: none;" data-placeholder="Saisir un nom" data-multiple="" data-libelle="" value="Hollande" data-limit="" tabindex="-1" title=""> 
</div> 

et dans la dernière balise <input>, changer l'attribut value au nom que je veux vérifier.

Ensuite, je vais devoir "cliquer" en quelque sorte sur le afficher les résultats (traduction: show results) sur la droite. Relevant du code HTML:

<div class="showResultsButton" style="text-align: center; display: block;"> 
    <a href="#" class="jqueryButton ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" onclick="showResultList($('.shortResults')); return false;" role="button"> 
    <span class="ui-button-icon-primary ui-icon ui-icon-search"></span> 
    <span class="ui-button-text"> 
     Afficher les résultats 
    </span> 
    </a> 
</div> 

Et puis je vais devoir se rendre à l'étiquette <div class="people clearfix"> et récupérer les <a href="..."> tags:

<div class="people clearfix"> 
    <div class="tab_result" style="clear:both"> 
     <div class="ppl">  
      <div class="ppl-wrap clearfix" style="clear:both"> 
       <div class="ppl-image"> 
        <a href="/profil/francois.hollande74" target="_blank"> 
         <img alt="" src="/ressources/temp/100_120t121_153006959_inconnu.jpeg"> 
        </a> 
       </div> 
       <div class="ppl-content"> 
        <h3> 
         <a href="/profil/francois.hollande74" target="_blank">Hollande François</a> 
        </h3> 
        <p class="meta">D Service Public Promo 1974</p> 
        <p></p> 
       </div> 
        <div class="ppl-content" style="float:right"></div> 
       </div> 
      <p class="buttons"> 
       <a class="button " href="/profil/francois.hollande74" target="_blank"> 
        Voir le profil 
       </a> 
      </p> 
     </div> 
    </div> 
</div> 

Voici mon code à ce jour:

library(XML) 
library(httr) 
library(foreach) 

url  <- "http://www.sciences-po.asso.fr/gene/main.php?base=1244"  
response <- GET(url) 
doc  <- content(response, type="text/html", encoding = 'ISO-8859-1') 
parseddoc <- htmlParse(doc) 

# i have to modify the content of this 
xpathApply(parseddoc, "//*[@id='PersonneNom']/@value") 
# then make sure it is sent to the server, retrieve the code sent back, etcaetera... 

Merci pour toute l'aide que vous pouvez nous apporter.

Répondre

0

Au cas où quelqu'un trébucherait sur cette question, j'ai trouvé deux autres paquets pour explorer les sites Web: rvest et RSelenium. Je suis allé avec RSelenium car il semblait être le plus simple: il ouvre votre navigateur et vous pouvez voir en direct ce que vous faites du code sur la page Web.

De plus, voici deux liens que je trouve très utile, le second étant une bonne introduction à RSelenium:

http://ikkyle.com/webscraping_with_r.html

https://www.datacamp.com/community/tutorials/scraping-javascript-generated-data-with-r