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.
*python 3.8.1
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()
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 '
Ä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