Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.

Überblick

In diesem Artikel habe ich eine Seite zum unendlichen Laden erstellt. Auf solchen Seiten können Sie die Quelle nicht mit Curl oder Anfragen abrufen, die Sie häufig verwenden. Daher müssen Sie etwas Besonderes tun. Dieses Mal werde ich den Code schreiben, um den Inhalt dieser Seite zu erhalten.

Umgebung

*python 3.8.1

Code

Rufen Sie die Quelle für die Seite ab, die mit dem Code in [diesem Artikel] erstellt wurde (https://qiita.com/bunnyhopper_isolated/items/5eebf1baf849fad744bf). Wenn die Zeit und die Anzahl der erfassten Bytes erreicht sind, wird der bisher erfasste Code ausgegeben.

get_inf_page.py


import requests
import timeout_decorator

r_bytes = b""
def main():
    url = "http://localhost:8000"

    r = requests.get(url, stream=True, timeout=20)

    byte_limit = 30
    @timeout_decorator.timeout(100)
    def load_bytes(r):
        global r_bytes
        for l in r.iter_content():
            r_bytes += l
            if len(r_bytes) % 500 == 0:
                print(f"loaded:{len(r_bytes)}/{byte_limit}")
            if len(r_bytes) > byte_limit:
                r.close()
                print("reached size limit")
                break

    try:
        load_bytes(r)
    except timeout_decorator.timeout_decorator.TimeoutError:
        print("timeout")
        pass

    print(r_bytes)

if __name__ == "__main__":
    main()

Funktionsprüfung (gestoppt, wenn die Anzahl der geladenen Bytes überschritten wird)

Führen Sie den obigen Code aus, während Sie den Code in diesem Artikel in einem anderen Terminal ausführen. Es wird wie folgt angezeigt.

reached size limit
b'<p>Hello World ! 0</p><p>Hello '

Funktionsprüfung (Stopp nach Ablauf der Ladezeit)

Ändern Sie die 11. und 12. Zeile wie folgt und überprüfen Sie den Vorgang auf die gleiche Weise wie oben.

    byte_limit = 1000
    @timeout_decorator.timeout(5)

Innerhalb von 5 Sekunden nach dem Start wird nur die Ausgabemenge angezeigt.

timeout
b'<p>Hello World ! 0</p><p>Hello World ! 1</p><p>Hello World ! 2</p>'

das ist alles.

Recommended Posts

Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Mit ReportingAPI + Cloud-Funktionen können Sie die Anzahl der Besuche auf jeder Seite ermitteln
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Einfache Möglichkeit, die Quelle der Python-Module zu überprüfen
So ermitteln Sie die Anzahl der Stellen in Python
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
Holen Sie sich mit Python den Betriebsstatus von JR West
Hinweis: So erhalten Sie den letzten Tag des Monats mit Python (hinzugefügt am ersten Tag des Monats)
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Link, um mit Python zu beginnen
Mindestkenntnisse, um mit dem Python-Protokollierungsmodul zu beginnen
Mit Python + Selenium erhalten Sie Informationen, die der Registerkarte "Netzwerk" der Chrome-Entwicklertools entsprechen
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
So erhalten Sie die Python-Version
[Teil 2] Crawlen mit Python! Klicken Sie auf die Webseite, um sich zu bewegen!
Erste Schritte mit Python
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
[Für Anfänger] Web-Scraping mit Python "Greifen Sie auf die URL auf der Seite zu, um den Inhalt abzurufen."
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
So erhalten Sie Informationen von Organisationen, Cost Explorer eines anderen AWS-Kontos bei Lambda (Python)
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Versuchen Sie, CloudWatch-Metriken mit der Python-Datenquelle re: dash abzurufen
Der schnellste Weg, um regelmäßig Kamerabilder mit Pythons OpenCV zu erhalten
Überprüfen Sie die Existenz der Datei mit Python
Der Weg zum Kompilieren zu Python 3 mit Thrift
Ich möchte mit Python eine beliebige URL aus der Zeichenfolge der HTML-Quelle extrahieren
Ein Memo eines Programms, das ein zweistelliges Datum mit Javascript, Ruby, Python oder einem Shell-Skript abruft.
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Holen Sie sich Artikelbesuche und Likes mit Qiita API + Python
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ruft den Rückgabewert eines externen Shell-Skripts (ls) mit python3 ab
Holen Sie sich den Inhalt von Git Diff aus Python
[Python] Lesen Sie den Quellcode von Flasche Teil 2
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
2016 Todai Mathematik mit Python gelöst
[Python] Ruft die Skalenbezeichnung der Figur ab / bearbeitet sie
[Hinweis] Exportieren Sie das HTML der Site mit Python.
[Python] Holen Sie sich die Hauptthemen von Yahoo News
Holen Sie sich den Aufrufer einer Funktion in Python
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird