Ist es möglich, die letzten Zeilen (oder sagen wir 1000 Zeichen) einer großen Webseite zu lesen?

8

Wir müssen alle fünf Minuten eine Webseite aufrufen und die Webseite wird ziemlich groß. Die Webseite ist eine Verzeichnisliste und wir benötigen die letzte Zeile (um einen Dateinamen zu erhalten). Was ist der beste Weg, um nur diese letzte Zeile zu bekommen?

(Wenn das eine lokale Datei wäre, könnte ich etwas relativ zum Dateiende Positionieren und lesen).

    
ThinkingStiff 06.01.2009, 22:54
quelle

7 Antworten

13

HTTP 1.1 unterstützt eine Reihe von Headern, um nur einen bestimmten Bereich von Bytes anzufordern, einschließlich der Unterstützung nur der letzten n Bytes einer Datei (unter Verwendung des "Suffix" -Formats). Siehe hier . Zum Beispiel,

%Vor%

für die letzten 1000 Bytes. (Angenommen, der Server unterstützt natürlich den Range-Header.)

    
Eric Rosenberger 06.01.2009, 23:07
quelle
2

HTTP unterstützt chunked Antworten, was bedeutet, dass Sie wahrscheinlich nach der gleichen Seite fragen können, aber mit einem anderen Offset IIRC fragen. Überprüfen Sie die HTTP RFCs .

EDIT: nach Überprüfung von RFC-2616 ist es der Bereich: HTTP-Header, den Sie wollen.

    
Keltia 06.01.2009 22:58
quelle
1

Sie haben zwei Möglichkeiten:

  1. Verwenden Sie die Chunked-Codierung. Siehe Ссылка Achten Sie auf das Header-Feld Bereich anfordern. Auch Ihr Server muss es unterstützen.

  2. Verwenden Sie FTP und führen Sie einen Neustart des FTP-Befehls mit dem benötigten Offset durch.

NotMe 06.01.2009 22:57
quelle
0

Verwenden Sie FTP und Fortsetzen programmatisch?

    
Gordon Thompson 06.01.2009 23:02
quelle
0

Sie könnten dies in Python mit einer Kombination aus urllib2 (eingebaut) und dem Beautiful Soup 3rd Party Modul (easy_install BeautifulSoup) tun.

Sie müssen die gesamte Seite laden, auch wenn die Daten der Reihe nach auf Ihren lokalen Computer übertragen werden. Urllib2 erleichtert jedoch das Verbinden und Abrufen der Seite, und Beautiful Soup verwandelt das rohe HTML in eine leicht zu navigierende Hierarchie, die Sie mit "Punktsyntax" durchlaufen können.

%Vor%     
Soviut 06.01.2009 23:04
quelle
0

Wenn Sie die Chunked-Codierung und den Range-Header nicht zum Laufen bringen können, schlage ich vor, die Arbeitsserverseite mit einem CGI-Skript oder was auch immer Ihnen gefällt, zu machen. Es erscheint verschwenderisch, die ganze Datei zu finden, nur um die ganze Zeile zu untersuchen!

Wenn Sie angeben, welches Betriebssystem und welchen Webserver Sie verwenden, bin ich sicher, dass jemand hier ein funktionierendes CGI-Skript innerhalb von Minuten posten wird, wenn Sie nicht weiterkommen.

    
Daniel Paull 06.01.2009 23:15
quelle
-2

Ein schmutziger Hack wäre es, ihn in Word zu öffnen und ein Makro aufzuzeichnen, um die letzte Zeile zu übernehmen (was das Löschen von Tabellen usw. beinhalten könnte).

Der folgende VBA-Code öffnet das Google-Definitionsresultat für "Stapelüberlauf" und entfernt die Kopf- und Fußzeile, wobei nur die Ergebnisliste übrig bleibt:

%Vor%

Dann nimm das Ergebnis und schreibe es irgendwo.

EDIT: Das ist ziemlich scheußlich, ich habe nur ein bisschen aufgenommen und verändert.

    
user51498 06.01.2009 23:06
quelle

Tags und Links