[PYTHON] Die Geschichte, ein Ring-Fit-Abenteuer kaufen zu wollen

Hintergrund

Trainiert ihr alle? Ring Fit Adventure, das sich perfekt zum Abheben eignet, wurde kürzlich von Nintendo veröffentlicht! !! Ich wollte es auch kaufen, aber es scheint vergriffen zu sein und es ist schmerzhaft. Trotzdem ärgere ich mich, bei Wiederverkäufern bei Mercari oder Yafuoku zu einem hohen Preis zu kaufen, und habe mein Bestes gegeben, um es auf dem regulären Weg zu kaufen.

Was ich getan habe

Wenn ich verschiedene Dinge googelte, hörte ich von Zeit zu Zeit, dass die Produkte eingingen und der Lagerbestand wiederhergestellt wurde. Ich kann jedoch nicht die ganze Zeit vor der Online-Shopping-Website bleiben, daher habe ich mich gefragt, ob ich mich benachrichtigen kann, wenn der Lagerbestand wiederhergestellt ist. Aus diesem Grund habe ich mithilfe von dieser Art von praktischer Website eine App erstellt, die Sie per Leitung benachrichtigt, wenn der Bestand hier wiederhergestellt wird.

Klicken Sie hier für Ergebnisse! https://github.com/aitaro/inventory-notification

Wenn Sie den Artikelcode ändern, können Sie ihn übrigens mit anderen Produkten verwenden.

Umgebung

Um ehrlich zu sein, ist jede Sprache in Ordnung. Ich persönlich mag Ruby, aber irgendwie habe ich mich für Python entschieden. Die Entwicklung erfolgt lokal, aber aufgrund der Art der Bestandsbenachrichtigung entwickeln wir uns mit der Idee, irgendwo bereitzustellen.

Ordnerstruktur

.
├── README.md
├── main.py
└── requirements.txt

requirements.txt


line-bot-sdk
selenium
chromedriver-binary

Implementierung

Grundsätzlich gibt es zwei Schritte.

  1. Scraping von net-zaiko.com
  2. An Leitung senden

Stellen Sie dies auf einem geeigneten Server bereit. (Diesmal Heroku)

Es gibt zwei Möglichkeiten, um zu kratzen: Die eine ist die Verwendung von Selen und die andere die Verwendung von beautifulsoup4. Da jedoch auf diese Site zugegriffen wird und dann die Inventarinformationen anderer Sites abgerufen werden, wird Selen das Verhalten des verwendeten Browsers reproduzieren. Außerdem erstellt line aus hier einen Bot und stellt ein Zugriffstoken aus. GOOGLE_CHROME_SHIM im Code ist der Speicherort der ausführbaren Chrome-Datei.

main.py


from linebot import LineBotApi
from linebot.models import TextSendMessage
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_binary
import re
import time
import os

#Bestandserfassung

#Ring Fit Abenteuer
item_id = '4902370543278'
# item_id = '4988013097025'

#Starten Sie den Browser
options = Options()
options.binary_location = os.getenv('GOOGLE_CHROME_SHIM')
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)

# net-Greifen Sie auf zaiko zu
url = 'https://www.net-zaiko.com/item/' + item_id
driver.get(url)
time.sleep(10)
targetElements = driver.find_elements_by_css_selector("#sl0 .siSa,.siSb,.siSc,.siSd,.siSe")
title = driver.find_element_by_id("itmH0").text

#Überprüfen Sie, ob in jedem Online-Shop Lagerbestände vorhanden sind
flag = False
for el in targetElements:
    #Schließen Sie amazon aus, da es sich um Make-up handelt
    pattern = r'Amazon\.co\.jp'
    result = re.search(pattern, el.text)
    if not result:
        flag = True
        print('Auf Lager')
    print(el.text)
    print(title)

#Beenden Sie den Browser
driver.quit()


#Zeile benachrichtigen

line_bot_api = LineBotApi(os.getenv('LINE_CHANNEL_ACCESS_TOKEN'))

if flag:
    messages = TextSendMessage(text=f"{title}Wir haben das Produkt auf Lager!\n Bitte greifen Sie von hier aus zu{url}")
    line_bot_api.broadcast(messages=messages)

Einfallsreichtum

Bereitstellen

Da Chrom enthalten war und es notwendig war, es regelmäßig ausführen zu können, untersuchte ich verschiedene Dinge unter dieser Bedingung, aber da es so aussah, als könnte Heroku kostenlos sein, entschied ich mich für Heroku. Ich werde weglassen, wie es in der Anwendung mit Heroku gemacht wird, aber Sie können den Heroku-Scheduler mit Add-On und Chrome und Chromedrive mit Buildpack setzen. Siehe hier.

Impressionen

Ich habe es in ca. 2 Stunden geschafft. Ich kann es noch nicht kaufen. Ich will es bald. Das Schaben sollte so lange durchgeführt werden, wie es Sie nicht stört.

Recommended Posts

Die Geschichte, ein Ring-Fit-Abenteuer kaufen zu wollen
Hinter dem Ringfit Adventure Ankunftsbot, um Wiederverkäufer auszurotten
Die Geschichte des Versuchs, den Client wieder zu verbinden
Die Geschichte, MeCab in Ubuntu 16.04 zu setzen
Die Geschichte von pep8 wechselt zu pycodestyle
Die Geschichte, ein Ring-Fit-Abenteuer kaufen zu wollen
Hinter dem Ringfit Adventure Ankunftsbot, um Wiederverkäufer auszurotten
Die Geschichte vom Umzug von Pipenv zur Poesie
Die Geschichte von sys.path.append ()
Die Geschichte der Verwendung von Circleci zum Bau vieler Linux-Räder
Die Geschichte des Baus von Zabbix 4.4
Die Geschichte der Einführung von Jedi (automatisches Vervollständigungspaket von Python) in Emacs
Die Geschichte des Kopierens von Daten von S3 auf Googles TeamDrive
Immerhin die Geschichte der Rückkehr von Linux zu Windows
Ich bin gerade in Singapur. Eine Geschichte über das Erstellen eines LineBot und den Wunsch, einen unvergesslichen Job zu machen
Die Geschichte, dass die Version von Python 3.7.7 nicht an Heroku angepasst wurde
Die Geschichte von Python und die Geschichte von NaN
Die Geschichte, dass man mit Pycharm kein Pygame spielen kann
Die Geschichte der Teilnahme an AtCoder
Testen Sie die Eignung der Verteilung
Die Geschichte des "Lochs" in der Akte
[Pythonista] Die Geschichte einer Aktion zum Kopieren ausgewählten Textes
Die Geschichte des erneuten Bereitstellens des Anwendungsservers
Ergänzung zur Erklärung von vscode
Die Geschichte des Exportierens eines Programms
Die Geschichte, dass "calendar.day_abbr" auf dem Admin-Bildschirm von django nicht aktualisiert werden konnte
zoom Ich habe versucht, den Grad der Aufregung der Geschichte auf der Konferenz zu quantifizieren
Ich habe versucht, die Phase der Geschichte mit COTOHA zu extrahieren und zu veranschaulichen
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Die Geschichte des Versuchs, SSH_AUTH_SOCK mit LD_PRELOAD auf dem Bildschirm veraltet zu halten
Die Geschichte eines Fehlers in PyOCR
Skript zum Ändern der Beschreibung von Fasta
10 Methoden zur Verbesserung der Genauigkeit von BERT
So überprüfen Sie die Version von Django
Die Geschichte einer unveränderlichen Form
Die Geschichte der Manipulation globaler Python-Variablen
Die Geschichte, deep3d auszuprobieren und zu verlieren
Die Geschichte der Verarbeitung A von Blackjack (Python)
Die Geschichte der IPv6-Adresse, die ich auf ein Minimum beschränken möchte
Die Geschichte des Wechsels des Azure App Service-Websystems von Windows zu Linux
Die Geschichte von soracom_exporter (Ich habe versucht, SORACOM Air mit Prometheus zu überwachen)
Die Geschichte eines hochrangigen Technikers, der versucht, das Überleben der Titanic vorherzusagen
So berechnen Sie die Volatilität einer Marke
Die Geschichte des tiefen Lernens mit TPU
So finden Sie den Bereich des Boronoi-Diagramms
Die Geschichte, dass die Lernkosten von Python niedrig sind
Die Hand von "Millijan" durch Kombinationsoptimierung finden
Einstellung zur Ausgabe des Protokolls zur Ausführung von cron
Die Ungenauigkeit von Tensorflow war auf log (0) zurückzuführen.
Die Geschichte der Herstellung des Mel Icon Generator Version 2
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ändern Sie den Dezimalpunkt der Protokollierung von, nach.
Bildverarbeitung? Die Geschichte, Python für zu starten
Die Geschichte, das optimale n in N Faust zu finden
Die Geschichte des Versuchs, Tensorboard mit Pytorch zu verwenden