Überwachung von Website-Änderungen mit Python

Ich wollte Änderungen an einer Site überwachen. Derzeit überwache ich meinen Selbsteinführungstext, aber wenn ich die URL und den Klassennamen ändere, kann er auf anderen Websites verwendet werden. Seitendaten werden alle 20 Sekunden erfasst und es wird angezeigt, ob sich die Daten von der vorherigen Erfassung unterscheiden.

import requests
import time

from bs4 import BeautifulSoup


url = "https://qiita.com/sssssssiiiiinnn"
class_name ='div.newUserPageProfile_info_body.newUserPageProfile_description'
file = "elems_text.txt"


def is_not_changed(old_elem, new_elem):
    return old_elem == new_elem


def set_old_elems():
    try:
        f = open(file)
        old_elems = f.read()
        print(f'{"old_elem":10} : {old_elems}')
    except:
        old_elems = ''
    return old_elems


def set_new_elems():
    response = requests.get(url)
    response.encoding = response.apparent_encoding
    bs = BeautifulSoup(response.text, 'html.parser')
    new_elems = str(bs.select(class_name))
    print(f'{"new_elem":10} : {new_elems}')
    return new_elems


def display_result(old_elem, new_elem):
    if not is_not_changed(old_elems, new_elems):
        f = open(file, 'w')
        f.writelines(new_elems)
        f.close()
        print("Change is detected!!")
    else:
        print("not changed...")


if __name__ == '__main__':
    try:
        while(1):
            print("="*100)
            new_elems = set_new_elems()
            old_elems = set_old_elems()
            display_result(old_elems, new_elems)
            time.sleep(20)
    except KeyboardInterrupt:
        print("Interrupted by Ctrl + C")

Recommended Posts

Überwachung von Website-Änderungen mit Python
Ändern Sie die Python-Version mit pyenv
Starten Sie Python
Scraping von Websites mit JavaScript in Python
Scraping mit Python
Eingabeaufforderung des Python-Interpreters ändern
Bearbeiten Sie Redmine mit Python Redmine
Datenbereinigung mit Python
Verwenden von Python # externen Paketen
WiringPi-SPI-Kommunikation mit Python
Altersberechnung mit Python
Suchen Sie Twitter mit Python
Namensidentifikation mit Python
Hinweise zur Verwendung von Python-Unterprozessen
Versuchen Sie es mit Tweepy [Python2.7]
Ändern Sie die Maya Python-Zeitleiste
Python-Memo mit perl-ternärem Operator
Mit Python abflachen
Scraping mit Python 3.5 async / await
Speichern Sie Bilder mit Python3-Anforderungen
Innenüberwachung mit Raspberry Pi
[S3] CRUD mit S3 unter Verwendung von Python [Python]
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Versuchen Sie es mit Kubernetes Client -Python-
Melden Sie sich auf der Website in Python an
Python-Notizen zur Verwendung von Perl-Spezialvariablen
[Python] Verwenden von OpenCV mit Python (Basic)
Scraping mit Python 3.5 Async-Syntax
Mit Python auf Twitter posten
Starten Sie mit Python zu Selen
Suchalgorithmus mit word2vec [Python]
[Python] Ändere den Typ mit Pandas
[Python] Ordnerüberwachung mit Watchdog
Python: Grundlagen der Verwendung von Scikit-Learn ①
# 1 [python3] Einfache Berechnung mit Variablen
Erstellen Sie JIRA-Tickets mit Python
Instrumentensteuerung mit Python [pyvisa]
Bearbeiten Sie Tabellenkalkulationen lokal mit Python
Python-Memo mit Perl --join
Web Scraping mit Selenium (Python)
[Python] Validierung von JSON mit Voluptuous
So ändern Sie die Python-Version
Online-Übertragung mit Python
Datenanalyse mit Python-Pandas
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Verwenden von OpenCV mit Python @Mac
[Python] Schießspiel mit Pyxel
Senden Sie mit Python mit Google Mail
Vervollständigung von Python mit Emacs mit Company-Jedi
So installieren Sie Python mit Anaconda
Initialisierung globaler Variablen mit Python-Dekoratoren
[Python] Laden von CSV-Dateien mit Pandas
Python Hinweis: Über den Vergleich mit is
[Ubuntu] [Python] Objektverfolgung mit dlib
Bilderfassung von Firefox mit Python
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Zusammenfassung bei Verwendung von AWS Lambda (Python)