Dans la continuité d'hier, nous allons créer une partie de l'application graphique qui stocke réellement les données.
Environnement
Aujourd'hui, je souhaite terminer la construction de l'environnement MySQL et stocker les informations précédentes dans la base de données.
https://qiita.com/hkusu/items/cda3e8461e7a46ecf25d Exécutez la commande spécifiée en vous référant à cet article
[Commande d'exécution]
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
résultat
curl: (22) The requested URL returned error: 404 Not Found
C'était probablement inutile parce que les données référencées étaient anciennes ... J'ai pensé qu'il s'agissait d'une installation Homebrew et cela devrait être fait pour que je lance la prochaine partie d'installation de MySQL. [Commande d'exécution]
brew update
brew install mysql
L'installation est terminée avec juste ça! J'ai défini le mot de passe, etc., mais il semble qu'il ne soit plus facilement accessible depuis le récent pro de la séquence ....
ALTER USER 'Nom d'utilisateur'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mot de passe';
J'ai dû faire ce réglage.
Afin de mettre des données dans MySQL, nous avons besoin d'une bibliothèque pour cela, alors ajoutez la ligne suivante au Gemfile.
gem 'activerecord'
gem 'mysql2', '0.5.2'
Dans cet état
bundle install --path .bundle
Lorsque vous exécutez. J'ai une erreur
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
Lorsque j'ai exécuté cette commande, j'ai pu l'installer sans aucun problème.
Tout d'abord, définissez une table pour stocker les données. Ce dont nous avons besoin cette fois, c'est de combien d'images sont téléchargées en quels jours, alors je me suis demandé si le tableau serait à peu près comme indiqué ci-dessous.
CREATE TABLE `logs` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`image_id` int DEFAULT NULL,
`download` int DEFAULT NULL,
`date` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Modifiez ensuite le code du robot. Premièrement pour se connecter à MySQL
crawler.rb
require 'active_record'
require 'date'
#Traitement des connexions DB
ActiveRecord::Base.establish_connection(
:adapter => 'mysql2',
:database => 'Nom de la base de données',
:host => 'localhost',
:username => 'Nom d'utilisateur',
:charset => 'utf8mb4',
:encoding => 'utf8mb4',
:collation => 'utf8mb4_general_ci',
:password => 'mot de passe'
)
class Log < ActiveRecord::Base; end
Ajoutez le code ci-dessus. En plus de cela, la partie principale du processus d'analyse
crawler.rb
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|
image_id = div.css(".sectiondata li")[0].text.split(":")[1]
download = div.css(".sectionimg .preview")[0].text
Log.create({image_id:image_id,download:download,date:Date.today})
}
Réécrivez comme ça. Et si vous l'exécutez comme d'habitude, les données seront stockées correctement.
Ceci termine la partie collecte de données. (Ça fait un peu passé ...)
Recommended Posts