[PYTHON] Obtenez la maintenance de l'iPad en grattant et en informant Slack

introduction

Des avantages du gouvernement seront également fournis, je souhaite donc acheter un iPad que je n'avais pas à bas prix avec des articles d'entretien! J'ai pensé. Cliquez ici pour les éléments de maintenance → https://www.apple.com/jp/shop/refurbished

Ce que je voulais, c'était un iPad Air (3e génération), mais au moment de la rédaction de cet article, c'était toute une bataille, et même s'il était nouvellement élevé, il serait tué instantanément. J'ai donc décidé de le rendre disponible à l'achat en grattant régulièrement pour que d'autres personnes ne soient pas dépassées et en me notifiant avec Slack, afin que je puisse facilement créer un programme Python et maintenir l'iPad Air en toute sécurité. J'ai pu acheter l'article, je vais donc le présenter cette fois.

Ce que j'ai fait cette fois

Ce qui a été utilisé

・ Python ・ Belle soupe ・ API Slack ・ Planificateur de temps Windows

Installer un environnement de scraping

pip install requests
pip install beautifulsoup4
pip install lxml

Obtention d'un jeton pour l'API Slack

J'ai créé un Slack que je n'avais que moi et j'ai posté une notification simplement en publiant l'API sous la forme du lien (https://qiita.com/ik-fib/items/b4a502d173a22b3947a0). J'ai obtenu et lié des Webhooks entrants.

Code Python

Je racle en utilisant Beautiful Soup et Python3. Cette fois, je voulais obtenir la liste des ventes de l'iPad Air, donc j'essaie de notifier quand les chaînes de caractères «Air» et «Wi-Fi» sont incluses. (Étant donné que la barre de menus n'est notifiée qu'avec Air, la chaîne de caractères Wi-Fi est également incluse) Si vous voulez un iPad Pro, vous pouvez faire "Pro", et si vous voulez un iPad mini, vous pouvez faire "mini" (je ne sais pas quoi faire s'il n'est pas marqué ...)

apple.py


# coding:utf-8
from bs4 import BeautifulSoup
import json
import requests

if(__name__ == "__main__"):
    url="https://www.apple.com/jp/shop/refurbished/ipad"#Liste des produits reconditionnés pour iPad
    headers = {"User-Agent": "Mozilla/5.0"}
    soup2 = BeautifulSoup(requests.get(url, headers=headers).content, 'html.parser')#Obtenez du HTML
    a_tags=soup2.select("a")#<a>Obtenir des balises
    for entry in a_tags:#Chaque acquis<a>À propos des balises
        if 'Air' in entry.text and 'Wi-Fi' in entry.text:#Lorsque vous avez iPad Air
            slackapi="API de l'espace de travail Slack que vous souhaitez publier"
            text = '<!channel> '+entry.text
            #Notifier Slack
            requests.post(slackapi, data = json.dumps({
                "text": text
            }))

Exécution périodique

Cette fois, j'avais un bureau Windows qui était toujours activé, j'ai donc utilisé le planificateur de tâches Windows pour exécuter Python de manière régulière. (Je pense qu'il est bon d'utiliser Lambda d'AWS)

Voir ici (https://qiita.com/kawa-Kotaro/items/4005a43eb686eae41448) pour savoir comment définir le planificateur de tâches. Au fait, j'ai fait deux déclencheurs toutes les 5 minutes et les ai exécutés toutes les 2 minutes et demie.

Un grattage fréquent sur une courte période peut submerger le serveur Web, gêner le côté analysé ou être considéré comme une attaque DoS (une attaque qui surcharge le serveur et perturbe le service). Donc sois prudent.

Résultat d'exécution

Si tout se passe bien, vous pouvez en informer Slack comme suit: Dans certains cas, il peut être plus rapide que le robot Twitter, qui publie des produits remis à neuf. スクリーンショット 2020-05-07 01.44.32.png

Recommended Posts

Obtenez la maintenance de l'iPad en grattant et en informant Slack
[Python x Zapier] Obtenez des informations d'alerte et notifiez avec Slack
Obtenez le lien de téléchargement Splunk en grattant
Nogisaka 46 Obtenez des images de blog en grattant
Obtenez des informations sur la propriété en grattant avec python
Essayez le Web scraping maintenant et obtenez des données de loterie 6
J'ai essayé d'obtenir une image en grattant
Obtenez la liste "J'aime" de Qiita en grattant
Notifier l'erreur et la fin de l'exécution par LINE [Python]
Obtenez des informations sur les matchs de course de bateaux avec le web scraping
Obtenez l'ID utilisateur et le nom d'écran du participant dans Slack