Website html code mit Python downloaden und abspeichern?

5 Antworten

Naja...Das wird schwer, Da Amazon nicht nur eine Seite hat, sondern mehrere Sites sprich mehrere HTML Formulare...Aber von denen kannst du dir ganz einfach den Quelltext kopieren, und in eine Textdatei einfügen...

Woher ich das weiß:eigene Erfahrung – Ausbildung/Verschiedene Kurse
NackterGerd  09.11.2020, 23:27

Was meinst du mit " HTML Formulare"

Die normalen Seiten bei Amazon sind doch keine Formulare - oder ?

0
WebcodeYT  10.11.2020, 14:50
@NackterGerd

Ja ich meine halt....wenn du auf einen Link kommst...ändert sich ja die Seite....also es gibt ja bspw. Startseite, Konto, Bestellungen und vieles mehr....und alles hat nen eigenen HTML Code....

0
NackterGerd  10.11.2020, 17:54
@WebcodeYT

Das sind HTML Seiten - evtl auch PHP Seiten

Formulare sind Seiten mit Eingabefelder z b. Bei der Bestellung Name, Adresse, ..

0
NackterGerd  10.11.2020, 17:58
@WebcodeYT

Mit der Hand den HTML Code kopieren wäre ja schon umständlich bei so vielen Seiten

Macht eigendlich schon eher Sinn automatisch- gibts auch fertige Tools dafür

Allerdings verstehe ich nicht was der Fragesteller mit den Seiten von Amazon anfangen möchte 🤣😂

0

Du kannst mit Python beliebige URLs herunterladen. Lädst du eine Seite (den HTML-Code) herunter, musst du diese dannach noch öffnen und auslesen welche weiteren Dateien (Bilder, ...) du zusätzlich benötigst. Die gesamte Amazon-Seite wirst du auf diese Seite nicht herunterladen können. Auch geschützte Inhalte wie z.B. die Videos von Amazon Prime Video bekommst du auf diese Weise nicht heruntergeladen.

Auch die Amazon-Website-Logik kannst du damit natürlich nicht herunterladen, da diese ja auf den Servern verbleibt und der Benutzer immer nur die Ausgaben erhält (analog: Wenn du ein Video von einem Spiel aufnimmst, kommst du dadurch nicht an den Quellcode)

Willst du nur einzelne Seiten abspeichern, geht das vom Browser aus deutlich einfacher. Der sucht auch gleich alle Abhängigkeiten raus und speichert die entsprechenden Daten mit ab.

Warum so umständlich

Die Aktuelle Seite kannst du einfach im Browser downladen.

Für die ganze Domain gibt es Download Programme.

Was du aber bei Ammazon bekommst sind dann immer nur die HTML Seiten - nicht die eigentlichen PHP Seiten aus denen die HTMLs dynamisch erzeugt werden.

regex9  10.11.2020, 02:07

Ich wüsste nicht, seit wann Amazon PHP nutzen würde.

0
NackterGerd  10.11.2020, 08:21
@regex9

Wieso nicht - die Daten liegen doch in der SQL Datenbank und werden in der Regel per PHP verarbeitet.

Wiso kommst du darauf dass Amazon auf PHP verzichten sollte ?

Was sollte der Vorteil sein ?

0
regex9  10.11.2020, 11:33
@NackterGerd

Weil sie andere Techniken verwenden (vorzugsweise Java), mit denen sich ihre Business-Logik und die Architektur generell stabiler, sicherer, besser umsetzen lassen.

0
NackterGerd  10.11.2020, 19:40
@regex9

Die meisten heute verfügbaren Shopsysteme, wie z.B. Magento, Oxid oder Shopware, basieren im Übrigen auf PHP. 

Ob Java sicherer oder Stabiler ist weiß ich nicht, da PHP aber für viele SQL Seiten verwendet werden (CMS genauso wie Onlineshops) kann ja PHP auch nicht so schlecht sein.

Außerdem ruft ein Browser normalerweise eine URL auf, die entweder HTML oder PHP ist.

Desalb muss jede Seite bei Java - soweit ich weiß - komplett erstellt werden, indem sie mit println() oder Ähnlichem HTML-Code in den Ausgabestrom schreiben.

Ändert sich das Erscheinungsbild, dann muss das Java-Programm umgebaut werden, was aufwändig und fehlerträchtig ist.

In der Regel ist der Programmierer auch nicht der Designer, und dieser möchte mit Webseiten-Erstellungsprogrammen wie DreamWeaver oder Microsoft FrontPage arbeiten.

In vielen dynamischen Programmen stecken oft nur ein oder zwei Zeilen Dynamik, der Rest ist statischer HTML-Code. O.k. bei Amazon sicherlich mehr 🤣

Bei PHP hat man den Vorteil das das HTML Gerüst ganz normal erstellt werden kann und nur der Dynamische Teil durch PHP ergänzt wird.

Das gibt gleich 2 Vorteile

1. bessere Trennung von Design und Dynamische Daten

2. Einfachere und sicherere Änderungen

Für viele Shopsysteme gibt es auch Foren, die viele häufige Anwendungsfälle betrachten und hierfür auch entsprechenden PHP-Code zur Verfügung stellen.

Das gleiche in Java zu machen kommt mir jedenfalls nicht wirklich stabiler oder sicherer vor.

Allerdings muss ich zugeben dass ich von Jave und Erstellung von HTML damit keine Ahnung haben.

Ich bin nur von meinem Wissen über PHP und der Tatsache dass es Shopsysteme gibt die PHP verwenden davon ausgegangen dass Amazon das genauso macht.

0
regex9  11.11.2020, 00:21
@NackterGerd

Wenn du PHP mit Java hinsichtlich der Stabilität vergleichen möchtest, wirst du bereits in der Syntax auf Argumente stoßen, die für Java sprechen. Variablen sind klar typisiert und Methoden geben eindeutige Rückgabetypen zurück. Es gibt keine unintuitiven Verhaltensweisen, bspw. bei einem Überlauf eines Wertebereichs oder Einlesen größerer Datenmengen, wie es bei PHP der Fall ist. Sicherheitstechnisch deckt Java bereits einiges out-of-the-box ab.

Im Programmablauf wiederum kann Java einzelne Aufgaben besser verteilen (Stichwort Multithreading). So lässt sich eine weitaus bessere Performance für Enterprise-Applikationen erreichen, als sie wohl eine PHP-Anwendung bieten könnte.

Außerdem ruft ein Browser normalerweise eine URL auf, die entweder HTML oder PHP ist.

Das ist abhängig davon, was du eingibst oder wohin ein antwortender Server weiterleitet. Der Browser ruft ebenso Dateien mit der Endung .css, .js, .jsp, usw. auf, wenn es angegeben wird.

Desalb muss jede Seite bei Java - soweit ich weiß - komplett erstellt werden, indem sie mit println() oder Ähnlichem HTML-Code in den Ausgabestrom schreiben.

Das passiert bei PHP genauso mit echo / print / print_r / ...

In beiden Fällen werden übrigens Caching-Operationen im Webserver eingesetzt (bei PHP bspw. der OPCache), sodass Code-Partien je Request nicht immer wieder neu übersetzt werden müssen.

Ändert sich das Erscheinungsbild, dann muss das Java-Programm umgebaut werden, was aufwändig und fehlerträchtig ist.

Nein, wenn sich das Erscheinungsbild der Webseite ändern soll, müssen in erster Linie nur die Views und CSS-Dateien geändert werden. Eine Änderung der Code-Dateien ist nur notwendig, wenn sich die Programmlogik auch ändern soll. Das es aufwendiger ist, Aktualisierungen oder Erweiterungen vorzunehmen stimmt, wird aber zugern in Kauf genommen, da dieser Umstand umgekehrt die Stabilität ermöglicht, die PHP nicht bieten kann (hierzu wieder der Verweis auf die strikte Typisierung / statische Analysen; zudem kommen Wartungsaspekte hinzu: Trennung von View und Logik). Also nein, fehlerträchtig ist es ganz und gar nicht.

Wie schnell Änderungen letztendlich deployed werden können, hängt technisch von der Serverkonfiguration (sowie den drumherum laufenden Systemen) und formell von der internen Firmenpolitik ab. Beliebt ist die Einrichtung von Systemen, die bei Code-Änderungen automatisiert Prozesse starten, die Testfälle durchführen und bei Erfolg auch automatisch deployen. Der Webseitennutzer bekommt davon in der Regel überhaupt nichts mit.

Bei PHP hat man den Vorteil das das HTML Gerüst ganz normal erstellt werden kann und nur der Dynamische Teil durch PHP ergänzt wird.

Das ist kein Alleinstellungsmerkmal von PHP. Bei PHP-Anwendungen, die kein Framework nutzen, ist es zumeist sogar eher das Problem, dass eine Trennung von Markup und Logik eben kaum oder nur schlecht erfolgt (du kannst es etwas mit CSS und dem style-Tag vergleichen). Template Engines wie Smarty oder Twig sind Mittel, die mehr Struktur in die Anwendungen bringen sollen.

(...) davon ausgegangen dass Amazon das genauso macht.

Webanwendungen wie Amazon sind Eisbergsysteme. Da hängt noch ein riesiger Teil an Businesslogik hintenan (nur ein Stichwort: Logistik), für den PHP auch längst nicht mehr geeignet wäre (generell werden für Enterprise Applikationen eher stabile Technologien wie Java oder .NET verwendet).

Sofern es sich nicht geändert hat, arbeitet Amazon intern zudem mit Oracle-Datenbanken und neben Java Webservices auch mit Mason (Perl-Framework).

0
NackterGerd  11.11.2020, 07:56
@regex9
Das ist abhängig davon, was du eingibst oder wohin ein antwortender Server weiterleitet. Der Browser ruft ebenso Dateien mit der Endung .css, .js, .jsp, usw. auf, wenn es angegeben wird.

Dann schau dir die Links an - ich habe noch keinen Link mit jsp oder ähnlichem gesehen

CSS und JS sind keine URLa sondern werden nur innerhalb der HTML oder PHP geladen

Desalb muss jede Seite bei Java - soweit ich weiß - komplett erstellt werden, indem sie mit println() oder Ähnlichem HTML-Code in den Ausgabestrom schreiben.
Das passiert bei PHP genauso mit  echo /  print /  print_r / ...

Falsch

Könnte man, aber wäre zu umständlich.

Das HTML Gerüst wird normalerweise ganz normal als HTML geschrieben und nur die Dynamischen Werte per <php ...?> Tag in den HTML Code eingebaut.

Die Programmiering und Anzeige wird getrennt

D.h. nur die Variablen per PHP Befehlen ausgegeben

Trennung von View und Programmierung ist also bei PHP durchaus kein Problem

Kein HTML muss in der Regel in einem Print ausgegeben werden.

Das ist kein Alleinstellungsmerkmal von PHP. Bei PHP-Anwendungen, die kein Framework nutzen, ist es zumeist sogar eher das Problem, dass eine Trennung von Markup und Logik eben kaum oder nur schlecht erfolgt (du kannst es etwas mit CSS und dem  style-Tag vergleichen). 

Wieso?

Die Trennung von Logik (PHP Funktionen) und Markup (HTML mit PHP Variablen Ausgabe) ist doch eine Trennung, vergleichbar mit CSS Files in denen die Styles getrennt vom HTML sind.

Zumal ja die HTML Vorlage ganz normal von irgend einem HTML Editor oder CMS kommen kann und die templates einfach mit den dynamischen Werten gefüllt werden können.

Webanwendungen wie Amazon sind Eisbergsysteme. Da hängt noch ein riesiger Teil an Businesslogik hintenan (nur ein Stichwort:  Logistik)

Klar hat Amazon noch viel andere Software aber die sollte natürlich nicht auf dem Webserver mit laufen.

Datensicherheit und interne Programme trennen vom Webshop ist gerade hier besonders wichtig.

Aber egal, öffentlich weist du es ja besser was bei Amazon läuft

0
regex9  11.11.2020, 23:55
@NackterGerd
Dann schau dir die Links an - ich habe noch keinen Link mit jsp oder ähnlichem gesehen

Jetzt schon: https://www.edeka.de/marktsuche.jsp 😋

Der Trend liegt bekanntermaßen eh darin, Dateiendungen zu verbergen - sowohl für PHP-basierte Seiten, als auch für Seiten, die Java, C#, o.ä. nutzen. Neue Webtechnologien / Webframeworks sind von Anfang an daraus ausgelegt, so etwas auszublenden.

CSS und JS sind keine URLa sondern werden nur innerhalb der HTML oder PHP geladen

URLs dienen der Adressierung von Ressourcen. Sie können sowohl auf HTML-Dokumente zeigen, als auch auf JavaScript- / CSS- / XML- / JSON- / u.a. Dateien. Die lassen sich im Browser auch problemlos aufrufen:

Ob der Code in CSS-/JavaScript-Dateien in einem bestimmten Kontext interpretiert wird oder nicht, ist hierfür nicht relevant.

Das HTML Gerüst wird normalerweise ganz normal als HTML geschrieben (...)

Hmn, ich dachte du redest davon, wie das HTML letzten Endes an den Browser geschickt wird. Das geht auf jeden Fall alles in einen Stream (auch ohne print/echo, in dem Fall halt implizit).

Dir geht es aber scheinbar darum, wie der Code vom Webprogrammierer geschrieben wird.

Also nein, auch bei Java-Frameworks ist es wie in PHP möglich, im View mit Ausdrücken zu arbeiten, um HTML zusammenzubauen.

Primitives Beispiel:

<% for (int i = 0; i < 5; ++i) { %>
  <p>Hello</p>
<% } %>

Das wurde über die Jahre ausgebaut. Eigene Sprachen / Template-Systeme wurden geschaffen (JSP, Facelets, ...).

Trennung von View und Programmierung ist also bei PHP durchaus kein Problem

Es ist nicht ausreichend, sofern keine Template-Engine eingesetzt wird.

Bereits so etwas:

<?php
  include "database.php";
  $result = $db->query("select a from b");

  foreach ($result as $entry):
?>
  <p><?= $entry ?></p>
<?php endforeach; ?>

ist unschön, weil da Controller-Logik im View hängt.

Klar hat Amazon noch viel andere Software aber die sollte natürlich nicht auf dem Webserver mit laufen.

Amazons Anwendungen laufen auf mehreren Applikationsservern, wie bei größeren Anwendungen halt üblich.

0
NackterGerd  12.11.2020, 03:26
@regex9
Jetzt schon:  https://www.edeka.de/marktsuche.jsp 😋

Ich wusste nicht dass Amazon jetzt Edeka heißt.

Hmn, ich dachte du redest davon, wie das HTML letzten Endes an den Browser geschickt wird. Das geht auf jeden Fall alles in einen Stream (auch ohne  print/ echo, in dem Fall halt implizit).

Natürlich steht im HTML das zum Browser geschickt wird kein PHP mehr sondern nur reines HTML

Das PHP ist natürlich nicht mehr enthalten.

Nein ich rede davon wie die Seite ursprünglich auf dem Server aussieht.

Dort braucht man zum erzeugen vom HTML in der Regel kein Print

Sondern schreibt das HTML gan einfach und übersichtlich in HTML und fügt dort wo dynamisch Daten angezeigt werden einfach nur die Daten per PHP Befehl ein.

Die Unterscheidung der PHP Seite mit HTML Inhalt auf dem Server und die HTML Seite die im Browser angezeigt wird ist ja bekanntlich nicht das gleiche 🤣

Bereits so etwas:
<?php
  include "database.php";
  $result = $db->query("select a from b");

  foreach ($result as $entry):
?>
  <p><?= $entry ?></p>
<?php endforeach; ?>
ist unschön, weil da Controller-Logik im View hängt.

Genauso unschön wie dies

<% for (int i = 0; i < 5; ++i) { %>
  <p>Hello</p>
<% } %>

Genau - so macht man das ja auch nicht, wenn man sauber arbeitet trennt man den Funtions-Code von HTML, nur die Variablen sollten in den HTML

Keine Ahnung wo du so einen Kauferwelch gelernt hast

0
regex9  12.11.2020, 04:56
@NackterGerd
Ich wusste nicht dass Amazon jetzt Edeka heißt.

Edeka ist ein eigener Unternehmensverbund. Mit Amazon haben die nichts zutun. 🤨

Natürlich steht im HTML das zum Browser geschickt wird kein PHP mehr sondern nur reines HTML (...)

Ich markiere es besser nochmal groß und fett:

Hmn, ich dachte du redest davon, WIE das HTML letzten Endes an den Browser geschickt wird.

--

Keine Ahnung wo du so einen Kauferwelch gelernt hast

Meintest du vielleicht Kauderwelsch? Hmn, macht aber dennoch keinen Sinn.

0
import requests
r = requests.get('https://www.amazon.com')
with open("amazon.txt", 'w') as f: f.write(r.text)

Die Frage ist, was du damit sinnvoll anfangen kannst.

import requests


r = requests.get('https://www.amazon.de/')
f = open('code.txt')
f.write(r.text)
f.close()
Woher ich das weiß:Studium / Ausbildung – Informatikstudent
NackterGerd  09.11.2020, 23:29

Und was hätte man davon eine HTML Seite in TXT Seite zu wandeln ?

0