2017-10-02 6 views
0

Comment puis-je supprimer les documents PDF à partir de HTML? J'utilise R et je ne peux qu'extraire le texte du HTML. L'exemple du site Web que je vais supprimer est le suivant.Web scraping fichiers PDF à partir de HTML

https://www.bot.or.th/English/MonetaryPolicy/Northern/EconomicReport/Pages/Releass_Economic_north.aspx

Cordialement

+0

Salut, oh j'ai oublié de poser le code accompagnant le fil Je vais continuer plus tard, merci pour l'observation –

Répondre

2

Lorsque vous dites que vous voulez gratter les fichiers PDF à partir de pages HTML, je pense que le premier problème que vous faites face est d'identifier réellement l'emplacement de ces fichiers PDF.

library(XML) 
library(RCurl) 

url <- "https://www.bot.or.th/English/MonetaryPolicy/Northern/EconomicReport/Pages/Releass_Economic_north.aspx" 
page <- getURL(url) 
parsed <- htmlParse(page) 
links <- xpathSApply(parsed, path="//a", xmlGetAttr, "href") 
inds <- grep("*.pdf", links) 
links <- links[inds] 

links contient toutes les URL aux fichiers PDF que vous essayez de télécharger.

Méfiez-vous: beaucoup de sites Web n'aiment pas beaucoup quand vous grattez automatiquement leurs documents et vous êtes bloqué. Avec les liens en place, vous pouvez commencer à faire défiler les liens et les télécharger un par un et les enregistrer dans votre répertoire de travail sous le nom destination. J'ai décidé d'extraire les noms de documents raisonnables pour vos fichiers PDF, sur la base des liens (extraction de la dernière pièce après la dernière / dans les urls

regex_match <- regexpr("[^/]+$", links, perl=TRUE) 
destination <- regmatches(links, regex_match) 

Pour éviter de surcharger les serveurs du site, je l'ai entendu est convivial mettre en pause votre grattage chaque fois dans un certain temps, donc j'utilise « Sys.sleep()` pour mettre en pause le grattage pendant un certain temps entre 0 et 5 secondes:

for(i in seq_along(links)){ 
    download.file(links[i], destfile=destination[i]) 
    Sys.sleep(runif(1, 1, 5)) 
} 
+0

Bonjour Ken S. Cela fonctionne très bien après avoir essayé plusieurs façons de supprimer la page. vous beaucoup pour votre contribution. –