Verwenden Sie den HTTP-Cache in Python

Wenn Sie einen Crawler erstellen, sollten Sie die iterative Ausführung berücksichtigen. Daher bin ich besorgt über den Cache der Site am Crawler-Ziel.

Selbst wenn Sie es erneut mit dem angewendeten Cache ausführen, sind die Daten, die durch Anzeigen derselben Seite abgerufen werden können, dieselben.

Dieses Mal möchte ich den HTTP-Cache in Python zusammenfassen.

HTTP-Cache

Der HTTP-Cache ist in RFC7234 definiert. Durch Hinzufügen eines Headers zum Caching zur Antwort kann der HTTP-Server dem HTTP-Client hinzufügen und die Richtlinie zum Zwischenspeichern von Inhalten anweisen.

HTTP-Header Right align
Cache-Control Detaillierte Anweisungen zur Caching-Richtlinie, z. B. ob Inhalte zwischengespeichert werden können
Expires Gibt das Ablaufdatum des Inhalts an
Etag Stellt eine Inhaltskennung dar. Der Wert von Etag ändert sich, wenn sich der Inhalt ändert
Last-Modified Stellt das Datum und die Uhrzeit der letzten Aktualisierung des Inhalts dar
Pragma Cache-Ähnlich wie Control, wird jedoch nur aus Gründen der Abwärtskompatibilität verwendet
Vary Gibt an, dass sich die vom Server zurückgegebene Antwort ändert, wenn sich der Wert des im Wert enthaltenen Anforderungsheaders ändert.

Starkes Geld

Sobald der Client die Antwort zwischengespeichert hat, sendet er keine Anfrage, bis sie abläuft und die zwischengespeicherte Antwort verwendet.

Schwacher Cache

Sobald der Client die Antwort zwischengespeichert hat, sendet er beim nächsten Mal eine bedingte Anforderung, und der Server gibt einen leeren Antworttext mit dem Statuscode 304 zurück, wenn keine Aktualisierungen vorliegen.

Verwenden Sie den HTTP-Cache in Python

import requests
from cachecontrol import CacheControl 
from cachecontrol.caches import FileCache

session = requests.Session()
#zwischengespeicherte Wrapping-Sitzung_Machen Sie eine Sitzung.
#Cache als Datei.Speichern Sie im Webcache-Verzeichnis.
cached_session = CacheControl(session, cache=FileCache('.webcache'))

response = cached_session.get('URL') 

# response.from_Sie können die aus dem Cache erhaltene Antwort mit dem Cache-Attribut erhalten.
print(f'from_cache: {response.from_cache}') 
print(f'status_code: {response.status_code}')

Ab dem zweiten Mal wird der zwischengespeicherte Inhalt zurückgegeben.

Recommended Posts

Verwenden Sie den HTTP-Cache in Python
Verwenden Sie config.ini mit Python
HTTP-Anfrage in Python
Verwenden Sie Datumsangaben in Python
Verwenden Sie Valgrind mit Python
Verwenden Sie den Profiler in Python
Mal sehen, wie def in Python verwendet wird
Verwenden Sie den let-Ausdruck in Python
Verwenden Sie den Parameterspeicher in Python
Verwenden Sie in Python ein Diktat mit Listenschlüssel
Verwenden Sie Random Forest mit Python
Verwenden Sie Spyder von Python IDE
Verwenden Sie Stoff wie in Python (Stoff3)
Schreiben Sie einen HTTP / 2-Server in Python
Verwendung von SQLite in Python
Verwenden Sie rospy mit virtualenv in Python3
Wie man MySQL mit Python benutzt
Verwenden Sie Python in pyenv mit NeoVim
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Verwenden Sie OpenCV mit Python 3 in Window
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Verwenden Sie print in Python2 lambda expression
Ein einfacher HTTP-Client, der in Python implementiert ist
Metaanalyse in Python
Unittest in Python
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
Plink in Python
Konstante in Python
Verwenden Sie \ d nicht in regulären Python 3-Ausdrücken!
FizzBuzz in Python
Verwendung von __slots__ in der Python-Klasse
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
Verwenden Sie pathlib in Maya (Python2.7), um sich auf das kommende Python3.7 vorzubereiten
nCr in Python.