[RUBY] 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 ~

Troisième jour

Cette fois, je vais faire quelque chose qui trace le nombre de téléchargements de photos.

** Détails ** Il existe un site de publication d'images sans droit d'auteur appelé Photo AC, qui affiche le nombre de téléchargements la veille, mais le lendemain, je ne peux pas voir le nombre de téléchargements il y a deux jours, donc une fois par jour J'aimerais l'obtenir, le mettre dans la base de données, et enfin faire un graphique. https://www.photo-ac.com/ (Si cela entraîne la suspension de votre compte, veuillez le faire à vos propres risques)

[Thème technique]

Grattage

Langue

Livrable cible

Pour l'instant, je voudrais implémenter la partie qui obtient une fois les informations du site.

Code et documentation

1. Obtenez les informations requises à partir de html

Contrairement à la dernière fois, cette fois j'utiliserai Mechanize car cela implique une connexion.

source 'https://rubygems.org/'

gem 'nokogiri'
gem 'mechanize'

Dans cet état

bundle install --path .bundle

La raison pour laquelle vous spécifiez le chemin avec --path est que si vous ne le spécifiez pas, il sera reflété dans tout l'environnement local et ce sera gênant plus tard.

Cliquez ici pour le code de la pièce réellement acquise

crawler.rb


require 'nokogiri'
require 'mechanize'

agent = Mechanize.new
agent.get("https://www.photo-ac.com")

agent.post("https://www.photo-ac.com/auth/login",{
  acc_type: 'cr',
  email: 'adresse mail',
  password: 'mot de passe',
  remember_me: '1'
})

page = agent.get("https://www.photo-ac.com/creator/list/?pl_q=&pl_order=-releasedate&pl_pp=200&pl_disp=all&pl_ntagsec=&pl_tags50over=&pl_chkpsd=")
doc = Nokogiri::HTML.parse(page.body, nil, 'utf-8')
doc.css(".photo-list").each{|div|
  p div.css(".sectiondata li")[0].text
  p div.css(".sectionimg .preview")[0].text
}

Lorsque vous exécutez ceci

"ID:2875969"
"0"
"ID:2875964"
"0"
"ID:2875028"
"0"
"ID:2875022"
"0"
"ID:2874964"
"0"
"ID:2871884"
"0"
"ID:2871883"
"0"
"ID:2871879"
"0"
"ID:2871873"
"0"
"ID:2871870"
"0"
"ID:2837286"
"0"
"ID:2837285"
"0"
"ID:2837282"
"0"
"ID:2837281"
"0"
"ID:2837280"
"0"
"ID:2837277"
"0"
"ID:2837276"
"0"
"ID:2836745"
"0"
"ID:2836741"
"3"
"ID:2836737"
"1"
"ID:2836735"
"2"
"ID:2836730"
"1"
"ID:2836723"
"0"
"ID:2836718"
"1"
"ID:2746521"
"6"
"ID:2746517"
"11"
"ID:2746513"
"1"
"ID:2746505"
"1"
"ID:2746086"
"1"
"ID:2746084"
"4"
"ID:2746070"
"15"
"ID:2746066"
"16"
"ID:2742664"
"10"
"ID:2742530"
"17"
"ID:2742522"
"6"
"ID:2742517"
"3"
"ID:2741719"
"4"
"ID:2741715"
"16"
"ID:2741708"
"2"
"ID:2741705"
"0"
"ID:2741700"
"0"
"ID:2741699"
"0"
"ID:2741675"
"21"
"ID:2741674"
"2"
"ID:2741653"
"0"
"ID:2741629"
"1"
"ID:2741567"
"0"
"ID:2741381"
"22"
"ID:2741336"
"7"
"ID:2733068"
"14"
"ID:2733060"
"0"
"ID:2733050"
"1"
"ID:2690326"
"2"
"ID:2690291"
"7"
"ID:2690259"
"1"

Comme ci-dessus, vous pouvez voir l'ID de l'image et le nombre actuel de téléchargements. Si vous mettez cela dans la base de données une fois par jour et stockez les données, il semble facile de les représenter graphiquement.

Recommended Posts

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 ~
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 ~
Codage 10 lignes par jour ~ Mise en œuvre du grattage ~
Je veux var_dump le contenu de l'intention
Je veux connaître la réponse de l'application Janken
Je souhaite afficher le nom de l'affiche du commentaire
Je veux retourner la position de défilement de UITableView!
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
Je veux appeler une méthode et compter le nombre
[Ruby] Je souhaite inverser l'ordre de la table de hachage
Je veux comprendre le flux des paramètres de demande de traitement Spring
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
Je veux limiter l'entrée en réduisant la plage de nombres
Je veux contrôler le message d'erreur par défaut de Spring Boot
Je veux changer la valeur de l'attribut dans Selenium of Ruby
Je veux connaître le JSP du portlet ouvert lors du développement de Liferay
[Ruby] Je souhaite extraire uniquement la valeur du hachage et uniquement la clé
Programme pour trouver le nombre de jours par mois y compris hors-année
Je veux passer l'argument d'Annotation et l'argument de la méthode d'appel à aspect
Je veux obtenir le nom de champ du champ [Java]. (Vieux ton d'histoire)
Je veux que vous utilisiez Enum # name () pour la clé de SharedPreference
[jour: 5] J'ai résumé les bases de Java
Codage 10 lignes par jour ~ Construction de l'environnement de grattage ~
Je veux obtenir la valeur de Cell de manière transparente quel que soit CellType (Apache POI)
Je veux voir le contenu de Request sans dire quatre ou cinq
Je veux obtenir récursivement la superclasse et l'interface d'une certaine classe