2017-05-07 1 views
3

Je commence avec grattage web en R, je mets ce code:Web de grattage avec R, le contenu

mps <- read_html("http://tunisie-annonce.com/AnnoncesImmobilier.asp") 

mps %>% 
    html_nodes("tr") %>% 
    html_text() 

Pour obtenir le contenu nécessaire que je mets dans un fichier texte. Mon problème est que je veux éliminer ces points rouges, mais je ne peux pas. Pourrais-tu m'aider s'il te plaît? Je pense que ces points remplacent <b> et <br> dans le code html.

enter image description here

+0

La page de destination contient une table. Votre but n'est pas clair pour moi, voulez-vous extraire le contenu de cette table et avoir dans un data.frame en R? ou peut-être vous êtes intéressé par d'autres contenus de la page? – SabDeM

+0

@SabDeM oui oui Je souhaite extraire le contenu de la table. J'ai extrait ce texte et j'ai juste besoin d'éliminer ces points bizarres pour mettre le dans un cadre de données. – sanjanasan

Répondre

1

Celui qui construit cette page assemblé très frustrante la table dans une table, mais non définie comme lui-même étiquette <table>, donc il est plus facile de le redéfinir de sorte qu'il analysera plus facilement:

library(rvest) 

mps <- read_html("http://tunisie-annonce.com/AnnoncesImmobilier.asp") 

df <- mps %>% 
    html_nodes("tr.Entete1, tr.Tableau1") %>% # get correct rows 
    paste(collapse = '\n') %>%  # paste nodes back to a single string 
    paste('<table>', ., '</table>') %>%  # add enclosing table node 
    read_html() %>% # reread as HTML 
    html_node('table') %>% 
    html_table(fill = TRUE) %>% # parse as table 
    { setNames(.[-1,], make.names(.[1,], unique = TRUE)) } # grab names from first row 

head(df) 
#>   X   Région NA.   Nature NA..1  Type NA..2 
#> 2  Prix   <NA> NA    <NA> NA  <NA> NA 
#> 3 Modifiée     NA    <NA> NA  <NA> NA 
#> 4     Kelibia NA   Terrain NA Terrain nu NA 
#> 5   Cite El Ghazala NA   Location NA App. 4 pièc NA 
#> 6     Le Bardo NA   Location NA App. 1 pièc NA 
#> 7     Le Bardo NA Location vacance NA App. 3 pièc NA 
#>     Texte.annonce NA..3 Prix Prix.1  X.1 Modifiée 
#> 2       <NA> NA <NA> <NA>  <NA>  <NA> 
#> 3       <NA> NA <NA> <NA>  <NA>  <NA> 
#> 4  Terrain a 5 km de kelibi NA 80 000  07/05/2017   
#> 5  S plus 3 haut standing c NA 790  07/05/2017   
#> 6   Appartements meubles NA 40 000  07/05/2017   
#> 7 Un bel appartement au bardo m NA 420  07/05/2017   
#> Modifiée.1 NA..4 NA..5 
#> 2  <NA> NA NA 
#> 3  <NA> NA NA 
#> 4  <NA> NA NA 
#> 5  <NA> NA NA 
#> 6  <NA> NA NA 
#> 7  <NA> NA NA 

Notez qu'il y a beaucoup de NA s et d'autres cruft ici encore à nettoyer, mais au moins c'est utilisable à ce stade.

+0

Merci beaucoup très bien! Tu me sauves la vie! C'est exactement ce dont j'ai besoin. Je vais travailler maintenant sur l'élimination de NA merci beaucoup muuuch – sanjanasan

0

Vous pouvez toujours utiliser des expressions régulières pour éliminer les caractères indésirables, par exemple,

mps <- gsub("•", " ", mps) 
+0

Thak vous @mkearney BUt j'ai essayé cela et cela n'a pas fonctionné. les points sont spéciaux, il ne s'agit pas de personnages simples ... – sanjanasan

+0

merci @mkearny! mais le problème ici est que les points ne sont pas comme des caractères normaux. ils ne peuvent pas être éliminés avec gsub – sanjanasan