[PYTHON] Holen Sie sich iPad Wartung durch Scraping und benachrichtigen Sie Slack

Einführung

Es werden auch Vorteile von der Regierung bereitgestellt, daher möchte ich ein iPad, das ich nicht hatte, zu einem niedrigen Preis mit Wartungsartikeln kaufen! Ich dachte. Klicken Sie hier für Wartungsartikel → https://www.apple.com/jp/shop/refurbished

Was ich wollte, war ein iPad Air (3. Generation), aber zum Zeitpunkt des Schreibens dieses Artikels war es ein ziemlicher Kampf, und selbst wenn es neu angehoben wurde, würde es sofort getötet werden. Deshalb habe ich mich entschlossen, es durch regelmäßiges Schaben zum Kauf anzubieten, damit andere Leute nicht überholt werden und mich mit Slack benachrichtigen, damit ich problemlos ein Python-Programm erstellen und das iPad Air sicher warten kann. Ich konnte den Artikel kaufen, daher werde ich ihn dieses Mal vorstellen.

Was ich diesmal gemacht habe

Was wurde verwendet

・ Python ・ Schöne Suppe ・ Slack API ・ Windows-Zeitplan

Scraping-Umgebung installieren

pip install requests
pip install beautifulsoup4
pip install lxml

Token für Slack API erhalten

Ich habe einen Slack gemacht, den nur ich hatte, und eine Benachrichtigung gepostet, indem ich die API in Form des Links (https://qiita.com/ik-fib/items/b4a502d173a22b3947a0) gepostet habe. Ich habe Incoming Webhooks bekommen und verlinkt.

Python-Code

Ich kratzte mit Beautiful Soup und Python3. Dieses Mal wollte ich die Verkaufsliste von iPad Air erhalten, daher versuche ich zu benachrichtigen, wenn die Zeichenketten "Air" und "Wi-Fi" enthalten sind. (Da die Menüleiste nur mit Air benachrichtigt wird, ist auch die Wi-Fi-Zeichenfolge enthalten.) Wenn Sie ein iPad Pro wollen, können Sie "Pro" machen, und wenn Sie ein iPad mini wollen, können Sie "Mini" machen (ich weiß nicht, was ich tun soll, wenn es nicht markiert ist ...)

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 der überholten Produkte für das iPad
    headers = {"User-Agent": "Mozilla/5.0"}
    soup2 = BeautifulSoup(requests.get(url, headers=headers).content, 'html.parser')#Holen Sie sich HTML
    a_tags=soup2.select("a")#<a>Tags abrufen
    for entry in a_tags:#Jeder erworben<a>Über Tags
        if 'Air' in entry.text and 'Wi-Fi' in entry.text:#Wenn Sie iPad Air haben
            slackapi="API des Slack-Arbeitsbereichs, den Sie veröffentlichen möchten"
            text = '<!channel> '+entry.text
            #Benachrichtigen Sie Slack
            requests.post(slackapi, data = json.dumps({
                "text": text
            }))

Periodische Ausführung

Dieses Mal hatte ich einen Windows-Desktop, der immer aktiviert war, daher habe ich den Windows-Taskplaner verwendet, um Python regelmäßig auszuführen. (Ich denke, es ist gut, Lambda von AWS zu verwenden)

Informationen zur Einstellungsmethode des Taskplaners finden Sie hier (https://qiita.com/kawa-Kotaro/items/4005a43eb686eae41448). Übrigens habe ich alle 5 Minuten zwei Trigger gemacht und sie alle zweieinhalb Minuten ausgeführt.

Häufiges Scraping über einen kurzen Zeitraum kann den Webserver überfordern, die gecrawlte Seite stören oder als DoS-Angriff betrachtet werden (ein Angriff, der den Server überlastet und den Dienst stört). Also sei vorsichtig.

Ausführungsergebnis

Wenn alles gut geht, können Sie Slack folgendermaßen benachrichtigen: In einigen Fällen ist es möglicherweise schneller als der Twitter-Bot, der überholte Produkte veröffentlicht. スクリーンショット 2020-05-07 01.44.32.png

Recommended Posts

Holen Sie sich iPad Wartung durch Scraping und benachrichtigen Sie Slack
[Python x Zapier] Erhalten Sie Warninformationen und benachrichtigen Sie mit Slack
Holen Sie sich Splunk Download-Link durch Scraping
Nogizaka46 Holen Sie sich Blog-Bilder durch Schaben
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
Probieren Sie jetzt Web Scraping aus und erhalten Sie Lotterie-6-Daten
Ich habe versucht, durch Schaben ein Bild zu bekommen
Holen Sie sich Qiitas "Gefällt mir" -Liste durch Schaben
Fehler und Abschluss der Ausführung durch LINE [Python] benachrichtigen
Holen Sie sich Informationen zu Bootsrennen mit Web Scraping
Rufen Sie die Benutzer-ID und den Bildschirmnamen des Teilnehmers in Slack ab