Der richtige Weg, um Skript in regelmäßigen Abständen eine Seite von einer HTTPS-Site ziehen

StackOverflow https://stackoverflow.com/questions/2875361

  •  03-10-2019
  •  | 
  •  

Frage

Ich mag eine Befehlszeilenskript für Cygwin / Bash erstellen, dass Protokolle in eine Website navigiert zu einer bestimmten Seite und es mit den Ergebnissen des letzten Laufes vergleicht. Bisher habe ich es mit Lynx arbeitet wie folgt:

----snpipped, just setting variables----
echo "# Command logfile created by Lynx 2.8.5rel.5 (29 Oct 2005)
----snipped the recorded keystrokes-------
key Right Arrow
key p
key Right Arrow
key ^U" >> $tmp1 #p, right arrow initiate the page saving

#"type" the filename inside the "where to save" dialog
for i in $(seq 0 $((${#tmp2} - 1)))
do
    echo "key ${tmp2:$i:1}" >> $tmp1
done

#hit enter and quit
echo "key ^J
key y
key q
key y
" >> $tmp1

lynx -accept_all_cookies -cmd_script=$tmp1 https://thewebpage.com/login

diff $tmp2 $oldComp
mv $tmp2 $oldComp

Es fühlt sich definitiv nicht „richtig“: die cmd_script besteht aus relativ Benutzeraktionen statt, die genauen Kettungsnamen und Aktionen angeben. Also, wenn alles auf dem Gelände jemals ändert, Orte wechselt oder eine neue Verbindung hinzugefügt wird - ich haben werde neu erstellen die Aktionen.

Auch kann ich nicht überprüfen, für Fehler, so kann ich nicht abbrechen Skript, wenn etwas schief geht (Login Fehler, usw.)

Eine weitere Alternative, die ich gesucht habe an ist Mechanize Ruby. (Als Anmerkung - Ich habe 0 Erfahrung mit Ruby-)

Was ist der beste Weg, dies zu verbessern oder neu schreiben würde?

War es hilfreich?

Lösung

Ich denke, Luchs ein großes Werkzeug für die einfachen Web-Automatisierungsaufgaben ist, aber natürlich hat seine Grenzen. Wenn Sie Fehler muss überprüft eine der mechanize Module für Perl, Python oder Ruby verwenden sollten (wenn Sie nicht jede dieser Sprachen kennen Python kann das einfachste sein, zu lernen).

Um die Luchs-Skript etwas robuster machen Sie die Suchfunktion Links wählen nutzen könnten. Auf einigen Seiten die Linkliste (l) verwendet, kann helfen.

Am Ende würde ich einige Integritätsprüfungen hinzufügen, um zu sehen, ob die heruntergeladenen Dateien sind wirklich die, die Sie wollen.

Andere Tipps

wget könnte hier nützlich sein?

Es ist ein http, https und ftd herunterladen Kommandozeilenprogramm. Es ist freie Software (GNU). Es hat viele Optionen wie Authentifizierung und timestamping (nur eine Datei herunterladen, wenn es seit dem letzten Mal geändert hat).

http://www.gnu.org/software/wget/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top