Faites-vous tous de l'exercice? Ring Fit Adventure, qui est parfait pour le retrait, a récemment été publié par Nintendo! !! Je voulais aussi l'acheter, mais il semble être en rupture de stock et c'est douloureux. Cela dit, je suis ennuyé d'acheter à un prix élevé auprès de revendeurs chez Mercari ou Yafuoku, alors j'ai fait de mon mieux pour l'acheter par la voie régulière.
Lorsque je recherchais diverses choses sur Google, j'entendais de temps en temps que les produits étaient reçus et que le stock était rétabli. Cependant, je ne peux pas rester tout le temps devant le site d'achat en ligne, alors je me demandais si je pouvais m'informer lorsque le stock aurait été restauré. Par conséquent, en utilisant ce type de site pratique, j'ai fait une application qui vous avertit par Line si le stock est restauré ici.
Cliquez ici pour les livrables! https://github.com/aitaro/inventory-notification
En passant, si vous modifiez le code article, vous pouvez l'utiliser avec d'autres produits.
Pour être honnête, n'importe quelle langue convient. Personnellement, j'aime Ruby, mais j'ai choisi Python. Le développement se fait localement, mais en raison de la nature de la notification d'inventaire, développons avec l'idée de déployer quelque part.
.
├── README.md
├── main.py
└── requirements.txt
requirements.txt
line-bot-sdk
selenium
chromedriver-binary
Il y a essentiellement deux étapes.
Déployez-le sur un serveur approprié. (Cette fois heroku)
Il existe deux façons de gratter, l'une consiste à utiliser du sélénium et l'autre à utiliser beautifulsoup4, mais puisque ce site est accédé et que les informations d'inventaire des autres sites sont récupérées, le sélénium qui reproduit le comportement du navigateur tel qu'il est utilisé. De plus, line crée un bot à partir de ici et émet un jeton d'accès. «GOOGLE_CHROME_SHIM» dans le code est l'emplacement de l'exécutable chrome.
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
#Acquisition d'informations sur les stocks
#Aventure en forme d'anneau
item_id = '4902370543278'
# item_id = '4988013097025'
#Lancez le navigateur
options = Options()
options.binary_location = os.getenv('GOOGLE_CHROME_SHIM')
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
# net-Accéder à zaiko
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
#Vérifiez s'il y a du stock dans chaque boutique en ligne
flag = False
for el in targetElements:
#Exclure amazon car il crée du maquillage
pattern = r'Amazon\.co\.jp'
result = re.search(pattern, el.text)
if not result:
flag = True
print('En stock')
print(el.text)
print(title)
#Quittez le navigateur
driver.quit()
#Notifier la ligne
line_bot_api = LineBotApi(os.getenv('LINE_CHANNEL_ACCESS_TOKEN'))
if flag:
messages = TextSendMessage(text=f"{title}Nous avons le produit en stock!\n Veuillez accéder à partir d'ici{url}")
line_bot_api.broadcast(messages=messages)
Puisque le chrome était inclus et qu'il était nécessaire de pouvoir l'exécuter régulièrement, j'ai examiné diverses choses dans cette condition, mais comme il semblait que heroku pouvait être gratuit, j'ai choisi heroku. Je vais omettre comment le faire dans l'application avec heroku, mais vous pouvez mettre le planificateur heroku avec un module complémentaire et mettre chrome et chromedrive avec buildpack. Voir Ici.
Je l'ai fait en environ 2 heures. Je ne peux pas encore l'acheter. Je le veux bientôt. Le grattage doit être fait tant que cela ne vous dérange pas.
Recommended Posts