2016-05-01 7 views
1

Я пытаюсь создать скрипт, который проверяет, был ли кто-то в этой школе, используя их alumni directory. (Вы можете использовать имя Francois Hollande (нынешний французский президент), чтобы посмотреть, как он себя ведет)Изменение html/javascript-кода с помощью httr

Насколько я могу судить (для кнопки «имя» («ном») мне нужно получить доступ к этой части 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> 

и в последнем <input> тега, изменить атрибут имени я хочу проверить value.

Затем мне нужно «щелкнуть» каким-либо образом на afficher les résultats (перевод: show results) справа. Соответствующий 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> 

И тогда мне придется добраться до <div class="people clearfix"> тега и извлечения <a href="..."> теги:

<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> 

Вот мой код до сих пор:

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... 

Спасибо за любую помощь, которую вы можете дать.

ответ

0

В случае, если кто-нибудь наткнется на этот вопрос, я нашел два других пакета для обхода сайтов: rvest и RSelenium. Я пошел с RSelenium, поскольку он казался самым прямым: он открывает ваш браузер, и вы можете видеть, что вы делаете на своем веб-сайте.

Кроме того, здесь есть две ссылки, которые я нашел очень полезным, второй из которых хорошее введение в RSelenium:

http://ikkyle.com/webscraping_with_r.html

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