2017-07-14 2 views
1

Je travaille sur un projet où je veux gratter une page comme celle-ci, afin d'obtenir la ville d'origine. J'ai essayé d'utiliser le sélecteur CSS: » .type-12 ~ .type-12 + .type-12" Cependant, je ne comprends pas le texte dans R.ne pas gratter la source html, mais le site réel

Lien: https://www.kickstarter.com/projects/1141096871/support-ctrl-shft/description

J'utilise rvest et et la fonction read_html.

Cependant, il semble que la source contient des scripts. Y at-il un moyen de gratter le site après que les scripts ont retourné leurs résultats (comme vous le voyez avec un navigateur)?

PS Je regardais des questions similaires, mais ai trouvé la réponse ..

code:

main.names <- read_html(x = paste0("https://www.kickstarter.com/projects/1141096871/support-ctrl-shft/description")) # feed `main.page` to the next step 
    names1 <- main.names %>% # feed `main.page` to the next step 
    html_nodes("div.mb0-md") %>% # get the CSS nodes 
    html_text()# extract the text 

Répondre

2

Vous ne devriez pas le faire. Ils fournissent une API que vous pouvez trouver ici: https://status.kickstarter.com/api

En utilisant des API ou Ajax/JSON appelle est généralement mieux depuis

  1. Le serveur n'est pas galvaudé parce que vos visites Scrapper chaque lien peut trouver causer inutile circulation. C'est mauvais pour la vitesse de votre programme et mauvais pour les serveurs du site que vous êtes en train de gratter.

  2. Vous n'avez pas à vous soucier de cela ils ont changé un nom de classe ou l'identifiant et votre code ne fonctionnera pas plus

Surtout la deuxième partie devrait vous intéresser car il peut prendre des heures qui conclusion La classe ne renvoie plus de valeur.

Mais pour répondre à votre question:

Lorsque vous utilisez le grattoir droit, vous trouverez tout ce que vous voulez. Quels outils utilisez-vous? Il y a des possibilités pour obtenir des données avant que le site soit chargé ou après. Vous pouvez exécuter le JS sur le site séparément et trouver du contenu caché ou trouver des choses comme display:none classes Css ...

Cela dépend vraiment de ce que vous utilisez et comment vous l'utilisez.

+0

Cette API ne fournit aucune information sur le pays d'origine ou d'autres informations sur le projet. Ou est-ce que je manque quelque chose? Les seules possibilités que je vois sont liées à des actions ou des mises à jour de maintenance. – nemja

+0

http://syntaxi.net/2013/03/24/let-s-explore-kickstarter-s-api/ https://github.com/markolson/kickscraper Et encore. Quels outils utilisez-vous? Avec BeatifulSoup (son python non R) je pourrais obtenir les infos. – hansTheFranz

+0

J'utilise R: main.names <- read_html (x = paste0 ("https://www.kickstarter.com/projects/1141096871/support-ctrl-shft/description")) # feed 'main.page' à l'étape suivante names1 <- main.names%>% # alimente 'main.page' à l'étape suivante html_nodes (" div.mb0-md ")%>% # récupère les noeuds CSS html_text() # extrait le noms de films (Voir édition) – nemja