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.
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.
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.
.
├── README.md
├── main.py
└── requirements.txt
requirements.txt
line-bot-sdk
selenium
chromedriver-binary
Grundsätzlich gibt es zwei Schritte.
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)
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.
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