Von gestern an werden wir einen Teil der Grafik-App erstellen, in dem die Daten tatsächlich gespeichert werden.
Umgebung
Heute möchte ich den Aufbau der MySQL-Umgebung abschließen und die vorherigen Informationen in der Datenbank speichern.
https://qiita.com/hkusu/items/cda3e8461e7a46ecf25d Führen Sie den angegebenen Befehl aus, der auf diesen Artikel verweist
[Ausführungsbefehl]
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
Ergebnis
curl: (22) The requested URL returned error: 404 Not Found
Es war wahrscheinlich nutzlos, weil die referenzierten Daten alt waren .... Ich dachte, dies ist eine Homebrew-Installation und sollte durchgeführt werden, damit ich den nächsten MySQL-Installationsteil ausführen kann. [Ausführungsbefehl]
brew update
brew install mysql
Die Installation ist damit abgeschlossen! Ich habe das Passwort usw. festgelegt, aber es scheint, dass es von der letzten Sequenz pro nicht mehr leicht zugänglich ist ....
ALTER USER 'Nutzername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Passwort';
Ich musste diese Einstellung vornehmen.
Um Daten in MySQL zu speichern, benötigen wir eine Bibliothek. Fügen Sie daher die folgende Zeile zur Gemfile hinzu.
gem 'activerecord'
gem 'mysql2', '0.5.2'
In diesem Zustand
bundle install --path .bundle
Wenn Sie ausführen. Ich habe einen Fehler bekommen
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
Als ich diesen Befehl ausführte, konnte ich ihn problemlos installieren.
Definieren Sie zunächst eine Tabelle zum Speichern der Daten. Was wir diesmal brauchen, ist, wie viele Bilder in welchen Tagen heruntergeladen wurden. Ich habe mich gefragt, ob die Tabelle ungefähr so aussehen würde, wie unten gezeigt.
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;
Ändern Sie dann den Code für den Crawler. Zuerst für die Verbindung zu MySQL
crawler.rb
require 'active_record'
require 'date'
#DB-Verbindungsverarbeitung
ActiveRecord::Base.establish_connection(
:adapter => 'mysql2',
:database => 'Name der Datenbank',
:host => 'localhost',
:username => 'Nutzername',
:charset => 'utf8mb4',
:encoding => 'utf8mb4',
:collation => 'utf8mb4_general_ci',
:password => 'Passwort'
)
class Log < ActiveRecord::Base; end
Fügen Sie den obigen Code hinzu. Darüber hinaus der Hauptteil des Parsing-Prozesses
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})
}
Schreiben Sie so um. Und wenn Sie es wie gewohnt ausführen, werden die Daten ordnungsgemäß gespeichert.
Damit ist der Datenerfassungsteil abgeschlossen. (Es ist ein bisschen vorbei ...)
Recommended Posts