[RUBY] Ich möchte die Anzahl der Foto-AC-Downloads grafisch darstellen [Scraping-Implementierung] ~ 10 Zeilen pro Tag Codierung ~

Dritter Tag

Dieses Mal werde ich etwas machen, das die Anzahl der Foto-Downloads grafisch darstellt.

** Einzelheiten ** Es gibt eine urheberrechtsfreie Website zum Posten von Bildern mit dem Namen Photo AC, und die Anzahl der Downloads am Vortag wird angezeigt. Am nächsten Tag kann ich die Anzahl der Downloads vor zwei Tagen nicht sehen, also einmal am Tag Ich möchte es bekommen, in die Datenbank stellen und schließlich ein Diagramm erstellen. https://www.photo-ac.com/ (Wenn Ihr Konto dadurch gestoppt wird, tun Sie dies bitte auf eigenes Risiko lol)

[Technisches Thema]

Schaben

Sprache

Ziel zu liefern

Im Moment möchte ich den Teil implementieren, der einmal Informationen von der Site erhält.

Code und Dokumentation

1. Holen Sie sich die erforderlichen Informationen aus HTML

Im Gegensatz zum letzten Mal verwenden wir diesmal Mechanize, da es sich um eine Anmeldung handelt.

source 'https://rubygems.org/'

gem 'nokogiri'
gem 'mechanize'

In diesem Staat

bundle install --path .bundle

Der Grund, warum Sie den Pfad mit --path angeben, besteht darin, dass er, wenn Sie ihn nicht angeben, in der gesamten lokalen Umgebung angezeigt wird und später Probleme verursacht.

Klicken Sie hier, um den Code des tatsächlich erfassten Teils anzuzeigen

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: 'Mail Adresse',
  password: 'Passwort',
  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
}

Wenn Sie dies ausführen

"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"

Wie oben sehen Sie die ID des Bildes und die aktuelle Anzahl der Downloads. Wenn Sie dies einmal täglich in die Datenbank stellen und die Daten speichern, scheint es einfach zu sein, sie grafisch darzustellen.

Recommended Posts

Ich möchte die Anzahl der Foto-AC-Downloads grafisch darstellen [Scraping-Implementierung] ~ 10 Zeilen pro Tag Codierung ~
Ich möchte die Anzahl der Foto-AC-Downloads grafisch darstellen [MySQL-Ring-Kooperation] ~ Codierung von 10 Zeilen pro Tag ~
Codierung von 10 Zeilen pro Tag ~ Scraping-Implementierung ~
Ich möchte den Inhalt der Absicht var_dump
Ich möchte die Antwort der Janken-App wissen
Ich möchte den Namen des Posters des Kommentars anzeigen
Ich möchte die Bildlaufposition von UITableView zurückgeben!
Ich möchte die Protokollausgabeeinstellung von UtilLoggingJdbcLogger ändern
Ich möchte eine Methode aufrufen und die Nummer zählen
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren
Ich möchte den Ablauf der Spring-Verarbeitungsanforderungsparameter verstehen
Die Geschichte von Collectors.groupingBy, die ich für die Nachwelt behalten möchte
Ich möchte die Eingabe begrenzen, indem ich den Zahlenbereich einschränke
Ich möchte die Standardfehlermeldung von Spring Boot steuern
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
Ich möchte die JSP des offenen Portlets bei der Entwicklung von Liferay kennen
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
Programm zum Ermitteln der Anzahl der Tage pro Monat einschließlich des Nebenjahres
Ich möchte das Argument der Annotation und das Argument der aufrufenden Methode an den Aspekt übergeben
Ich möchte den Feldnamen des [Java] -Felds erhalten. (Alter Ton)
Ich möchte, dass Sie Enum # name () für den Schlüssel von SharedPreference verwenden
[Tag: 5] Ich habe die Grundlagen von Java zusammengefasst
Codierung von 10 Zeilen pro Tag ~ Aufbau der Kratzumgebung ~
Ich möchte den Wert von Cell unabhängig vom CellType (Apache POI) transparent erhalten.
Ich möchte den Inhalt der Anfrage sehen, ohne vier oder fünf zu sagen
Ich möchte rekursiv die Oberklasse und die Schnittstelle einer bestimmten Klasse erhalten