Dans cet article, j'ai créé une page pour un chargement infini. Sur des pages comme celle-ci, vous ne pouvez pas obtenir la source avec des curl ou des requêtes, que vous utilisez souvent, vous devez donc faire quelque chose d'un peu spécial. Cette fois, j'écrirai le code pour obtenir le contenu de cette page.
*python 3.8.1
Obtenez la source de la page créée par le code de cet article. Lorsque la limite de temps et de nombre d'octets acquis est atteinte, le code acquis jusqu'à présent est émis.
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()
Veuillez exécuter le code ci-dessus tout en exécutant le code dans cet article dans un autre terminal. Il sera affiché comme suit.
reached size limit
b'<p>Hello World ! 0</p><p>Hello '
Modifiez les 11e et 12e lignes pour ce qui suit et vérifiez le fonctionnement de la même manière que ci-dessus.
byte_limit = 1000
@timeout_decorator.timeout(5)
Seule la quantité de sortie est affichée dans les 5 secondes après le démarrage.
timeout
b'<p>Hello World ! 0</p><p>Hello World ! 1</p><p>Hello World ! 2</p>'
c'est tout.
Recommended Posts