[RUBY] Codage 10 lignes par jour ~ Mise en œuvre du grattage ~

Aperçu

Dans la continuité d'hier, j'écrirai également 10 lignes de code aujourd'hui.

le 2ème jour

【thème】

Grattage

Langue

Livrable cible

Je voudrais terminer le corps principal du grattage, que je n'ai pas pu terminer hier.

Code et documentation

1. Réexécutez l'installation du bundle

C'était une installation groupée qui est restée bloquée hier, mais quand j'ai réinstallé xcode, cela fonctionnait bien lol

$ bundle install --path .bundle

Fetching gem metadata from https://rubygems.org/.................
Resolving dependencies...
Using bundler 1.17.2
Using mini_portile2 2.4.0
Fetching nokogiri 1.10.9
Installing nokogiri 1.10.9 with native extensions
Bundle complete! 1 Gemfile dependency, 3 gems now installed.
Bundled gems are installed into `./.bundle`

2. Perth avec Nokogiri

Maintenant, écrivons le traitement de la partie perspective en utilisant Nokogiri. Cette fois, je veux juste voir le titre de l'animation, donc je vais extraire le titre.

Je veux utiliser nokogiri, donc en haut du fichier

require 'nokogiri'

Je vais décrire ici.

Et dans la continuité de la dernière fois


#Analyser le HTML reçu
doc = Nokogiri::HTML.parse(response.body, nil, nil)

#Extraire les informations nécessaires à partir des informations analysées
doc.css(".l-searchPageRanking_unit_title").each{|div|
    puts div.text.split("\n")[2].gsub("              ","")
}

Écrivez un processus pour analyser le HTML reçu de cette manière.

3. Exécutez

Vous pouvez exécuter ruby avec la commande suivante.

bundle exec ruby crawler.rb

Puis

Voulez-vous que Kaguya vous le dise? ~ Love brain battle of geniuses ~ (vidéo d'anime TV)
Evil God Drop Kick '(Dash) (Vidéo Anime TV)
BNA BNA (vidéo d'anime télévisé)
Caché (vidéo d'anime télévisé)
Je me suis réincarné en fille méchante qui n'a que le drapeau de la ruine du jeu de jeune fille ... (vidéo d'animation télévisée)
Écoutez les vagues (vidéo d'anime télévisé)
Chanter hier (vidéo d'anime télévisé)
Corbeille de fruits 2e saison (vidéo d'animation télévisée)
Ciel innocent! (Vidéo d'anime télévisé)
Princess Connect! Re: Dive (vidéo d'anime télévisé)
Deuxième série majeure 2 (vidéo d'anime télévisé)
Amoureux des livres Shimogami-Je ne peux pas choisir le moyen de devenir commis-Partie 2 (vidéo d'anime télévisé)
Journal après l'école (vidéo d'anime télévisé)
Kingdom 3rd series (vidéo d'anime télévisé)
Grapenil (vidéo d'animation télévisée)
Grand-père dérangeant (vidéo d'anime télévisé)
Après toute ma jeunesse, le riz romantique est faux. Terminé (vidéo d'anime télévisé)
Shokugeki no Soma Gonozara (vidéo d'animation télévisée)
Arte (vidéo d'animation télévisée)
Millionaire Detective Balance: ILLIMITÉ (TV Anime Video)
Digimon Adventure: (vidéo d'anime télévisé)
Re: La vie dans un monde différent à partir de zéro(Deuxième étape)(Vidéo d'anime télévisé)
AUDITEURS (vidéo d'anime télévisé)
Hakushon Daimaou 2020 (vidéo d'animation télévisée)
Momo successif (vidéo d'anime télévisé)

Je pense que la liste sera affichée comme ça. Pour être honnête, j'ai l'impression que je vais mettre un peu plus correctement le split ou gsub, mais ... je le ferai une fois.

Cependant, il y a un problème ici, quand j'ai vérifié le nombre de lignes de code ajoutées cette fois, c'était 9 lignes même si je mets un commentaire .... Donc, j'ai essayé d'obtenir la valeur numérique telle que le nombre d'évaluations ici Je voudrais ajouter.

4. Obtenez des évaluations et des commentaires

Modifions le processus d'analyse plus tôt afin que nous puissions également afficher le nombre de notes et de commentaires.

#Extraire les informations nécessaires à partir des informations analysées
doc.css(".l-searchPageRanking_unit").each{|div|
    puts "Titre:" + div.css(".l-searchPageRanking_unit_title")[0].text.split("\n")[2].gsub("              ","")
    puts "Évaluation:" + div.css(".l-searchPageRanking_unit_mainBlock_starPoint strong")[0].text
    puts "Nombre de commentaires:" + div.css(".l-searchPageRanking_unit_mainBlock_starPoint span")[0].text + "\n\n"
}

Pour expliquer brièvement, dans le code précédent, seul l'en-tête a été répété, mais si vous voulez une évaluation, vous devez spécifier la balise qui entoure les informations d'animation et la boucle, comme ci-dessus Je déconne devant chacun.

5. Exécutez à nouveau

Exécutez avec la commande suivante


bundle exec ruby crawler.rb

Puis

Titre:Voulez-vous que Kaguya vous le dise? ~ Love brain battle of geniuses ~ (vidéo d'anime TV)
Évaluation:3.8
Nombre de commentaires:120

Titre:Evil God Drop Kick '(Dash) (Vidéo Anime TV)
Évaluation:3.9
Nombre de commentaires:54

Titre:BNA BNA (vidéo d'anime télévisé)
Évaluation:3.7
Nombre de commentaires:88

Titre:Caché (vidéo d'anime télévisé)
Évaluation:3.6
Nombre de commentaires:105

Titre:Je me suis réincarné en fille méchante qui n'a que le drapeau de la ruine du jeu de jeune fille ... (vidéo d'animation télévisée)
Évaluation:3.6
Nombre de commentaires:114

Titre:Écoutez les vagues (vidéo d'anime télévisé)
Évaluation:3.6
Nombre de commentaires:77

Titre:Chanter hier (vidéo d'anime télévisé)
Évaluation:3.8
Nombre de commentaires:115

Titre:Corbeille de fruits 2e saison (vidéo d'animation télévisée)
Évaluation:3.5
Nombre de commentaires:23

Titre:Ciel innocent! (Vidéo d'anime télévisé)
Évaluation:3.4
Nombre de commentaires:46

Titre:Princess Connect! Re: Dive (vidéo d'anime télévisé)
Évaluation:3.5
Nombre de commentaires:55

Titre:Deuxième série majeure 2 (vidéo d'anime télévisé)
Évaluation:3.5
Nombre de commentaires:15

Titre:Amoureux des livres Shimogami-Je ne peux pas choisir le moyen de devenir commis-Partie 2 (vidéo d'anime télévisé)
Évaluation:3.3
Nombre de commentaires:41

Titre:Journal après l'école (vidéo d'anime télévisé)
Évaluation:3.4
Nombre de commentaires:53

Titre:Kingdom 3rd series (vidéo d'anime télévisé)
Évaluation:3.4
Nombre de commentaires:20

Titre:Grapenil (vidéo d'animation télévisée)
Évaluation:3.5
Nombre de commentaires:74

Titre:Grand-père dérangeant (vidéo d'anime télévisé)
Évaluation:3.4
Nombre de commentaires:11

Titre:Après toute ma jeunesse, le riz romantique est faux. Terminé (vidéo d'anime télévisé)
Évaluation:3.3
Nombre de commentaires:23

Titre:Shokugeki no Soma Gonozara (vidéo d'animation télévisée)
Évaluation:3.3
Nombre de commentaires:30

Titre:Arte (vidéo d'animation télévisée)
Évaluation:3.4
Nombre de commentaires:51

Titre:Millionaire Detective Balance: ILLIMITÉ (TV Anime Video)
Évaluation:3.2
Nombre de commentaires:37

Titre:Digimon Adventure: (vidéo d'anime télévisé)
Évaluation:3.2
Nombre de commentaires:15

Titre:Re: La vie dans un monde différent à partir de zéro(Deuxième étape)(Vidéo d'anime télévisé)
Évaluation:3.2
Nombre de commentaires:13

Titre:AUDITEURS (vidéo d'anime télévisé)
Évaluation:3.2
Nombre de commentaires:57

Titre:Hakushon Daimaou 2020 (vidéo d'animation télévisée)
Évaluation:3.2
Nombre de commentaires:14

Titre:Momo successif (vidéo d'anime télévisé)
Évaluation:3.1
Nombre de commentaires:26

Comme mentionné ci-dessus, vous pouvez obtenir la note et le nombre de commentaires pour chaque animation, et vous pouvez décider lequel regarder! !! !!

PS Personnellement, je poussais Soma, mais l'élan s'est visiblement ralenti récemment ... Ensuite, j'ai pensé que je regarderais le "Kaguya" ou le "Fruit Basket" qui a pleuré après le premier trimestre. Je vais.

J'aimerais également publier le code que j'ai écrit aujourd'hui sur github. (Je ne sais pas si ça vaut le coup) https://github.com/itayayuichiro/anikore_crawler

Recommended Posts

Codage 10 lignes par jour ~ Mise en œuvre du grattage ~
Codage 10 lignes par jour ~ Construction de l'environnement de grattage ~
Je veux représenter graphiquement le nombre de téléchargements de photos AC [Mise en œuvre du grattage] ~ 10 lignes par jour de codage ~
Créer un mécanisme pour publier des réservations sur Qiita [Publication de réservation] ~ Codage de 10 lignes par jour ~ ~
Créer un mécanisme pour publier des réservations sur Qiita [Projet d'acquisition] ~ Codage de 10 lignes par jour ~ ~
Je veux représenter graphiquement le nombre de téléchargements de photos AC [coopération en anneau MySQL] ~ Codage de 10 lignes par jour ~