[RUBY] [Go To Travel] Ich suchte nach einem Plan mit einer Quo-Karte

Verwenden Sie Docker

docker-compose.yml


version: "3.7"
services:
  chrome:
    image: selenium/standalone-chrome
    shm_size: 256m

  backend:
    build:
      context: ./backend
    working_dir: /app
    volumes:
      - ./backend:/app
    command: ash -c "tail -f README.md"

Rails c muss nur möglich sein, also ist Command`` tail -f, damit das Backend nicht endet, selbst wenn Docker-Compose Up

Geben Sie danach mit einem Befehl wie "docker exec -it backend_1 ash" ein.

Rufen Sie von der Schienenseite aus Selen / Standalone-Chrom auf

models/concerns/chromeable.rb


require "selenium-webdriver"
require "capybara"

module Chromeable
  extend ActiveSupport::Concern

  DOCKER_CHROME_SELENIUM_HOST_NAME = "chrome"
  Capybara.register_driver :chrome do |app|
    args = %w[
      --headless
      --disable-gpu
      --window-size=1280,800
      --blink-settings=imagesEnabled=false
    ]

    caps =
      Selenium::WebDriver::Remote::Capabilities.chrome(
        "goog:chromeOptions" => {
          args: args,
          prefs: {
            credentials_enable_service: false,
            profile: { password_manager_enabled: false }
          }
        }
      )

    Capybara::Selenium::Driver.new(
      app,
      browser: :remote,
      desired_capabilities: caps,
      url: "http://#{DOCKER_CHROME_SELENIUM_HOST_NAME}:4444/wd/hub"
    )
  end

  included {}

  module ClassMethod; end

  def create_session
    session = Capybara::Session.new(:chrome)
    if block_given?
      begin
        yield session
      ensure
        session&.driver&.quit
      end
    else
      session
    end
  end
end

Erstellen Sie ein Unternehmen, das den "Chrome" -Dienst von Docker-Compose wie folgt aufrufen, nach Jaran suchen und das mit "/ ([\ d,] +) Yen /" im angezeigten Plannamen auswählen kann. Und speichern Sie es in der Datenbank. Tun Sie dies bis zur letzten Seite.

models/Jalan.rb


class Jalan < ApplicationRecord
  class Crawler
    include Chromeable

    def ensure_session
      @session = create_session
      session.visit "https://www.jalan.net/uw/uwp2011/uww2011init.do?keyword=%83N%83I%83J%81%5B%83h&distCd=06&rootCd=7701&screenId=FWPCTOP&image1.x=11&image1.y=13"
      session.select "1", from: "adultNum"
      session.click_on "Forschung"

      yield
    ensure
      session&.driver&.quit
    end

    ...
  end 
end

Ergebnis

Jalan.group(:value).count
=> {3000=>201, 4000=>15, 5000=>37, 6000=>3, 7000=>2, 7700=>2, 8000=>1, 10000=>3, 30000=>2}

Es gibt Lärm, aber ...

Toller Plan, den ich gefunden habe

Ich weiß nicht, was ein 50.000-Yen-Hotel mit einer 30.000-Yen-Quo-Karte sagt. Die JCB-Geschenkkarte mit 10.000 Yen scheint viel einfacher zu verwenden zu sein als die Quo-Karte.

Recommended Posts

[Go To Travel] Ich suchte nach einem Plan mit einer Quo-Karte
Ich habe mit Gem in Ruby nach einem Webframework gesucht
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
[Einführung in JSP + Servlet] Ich habe eine Weile damit gespielt ♬
Ich möchte im Dialogfeld mehrere Elemente mit einem benutzerdefinierten Layout auswählen
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)
Ich wollte eine Diashow mit Slick modisch umsetzen.
Ich möchte ein chinesisches (koreanisches) PDF mit dünnen Berichten anzeigen
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Sogar in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (Javassist zweite Abkochung)
SpringSecurity Ich war süchtig danach, mich mit einem Hash-Passwort anzumelden (gelöst)
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 (Black Magic) ausgeben.
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich habe versucht, den Block mit Java zu brechen (1)
[Azure] Ich habe versucht, eine kostenlose Java-App zu erstellen ~ Mit FTP verbinden ~ [Anfänger]
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 1 (API Edition)
Ich habe eine Methode entwickelt, um nach Premium Friday zu fragen
Ich möchte ein kleines Symbol in Rails verwenden
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich möchte eine bestimmte Datei mit WatchService überwachen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
[So fügen Sie ein Video mit Rails in haml ein]
Ich möchte eine Funktion in der Rails Console definieren
Ich möchte in RSpec auf einen GoogleMap-Pin klicken
Ich möchte eine generische Anmerkung für einen Typ erstellen
Implementierung einer starken API für "Ich möchte ~~ auf dem Bildschirm anzeigen" mit einfachem CQRS
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 2 (Client Edition)
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 1
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Ich möchte einen relativen Pfad in einer Situation finden, in der Pfad verwendet wird
[Rails] Ich habe versucht, eine Mini-App mit FullCalendar zu erstellen
Ich habe ein Plug-In erstellt, das Jextract mit Gradle-Aufgaben ausführt
[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich bin auf einen Typen mit zwei Punkten in Rails gestoßen
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich möchte eine Parkettdatei auch in Ruby erstellen
Zuordnung zu einer Klasse mit einem Wertobjekt in How to My Batis
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 2
Ich habe versucht, eine Webanwendung voller Fehler mit Kotlin zu implementieren
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
So richten Sie einen Proxy mit Authentifizierung in Feign ein
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 0
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
Wie gehe ich mit dem Typ um, den ich 2 Jahre lang über das Schreiben eines Java-Programms nachgedacht habe?