urlopen gibt nicht vollständige html seite zurück

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Martina

Hallo,

ich versuche eine html Seite mit urlib auszulesen. Klappt auch soweit prima, bis auf die div Tags am Ende der Seite, die nicht mitkommen.
Leider stehen da wichtige infos drinn. Kennt jemand das Problem?

Ich habe es auch mit urlib2 versucht:
req = urllib2.Request(url)
handle = urllib2.urlopen(req)
html = handle.read()

Wenn ich die Seite mit dem Browser speichere, sind die Div Tags am Ende da, wenn ich das 'html' von oben printe, nicht.
</BODY>
</HTML> steht trotzdem als letzes da, bloss die Divs davor fehlen.

Für Hilfe dankbar,
Martina
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Welche Seite versuchst du denn runter zu laden???

Vielleicht gibt es eine Browser-Weiche!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Martina

jens hat geschrieben:Welche Seite versuchst du denn runter zu laden???

Vielleicht gibt es eine Browser-Weiche!
Das ist eine lokale Seite, deshalb kann ich keinen link posten.
Ich habe es auch versucht, mich als Explorer auszugeben - kein Erfolg.
Könnte es natürlich nochmal als Mozilla versuchen, aber ich dachte, es liegt vielleicht an was anderem?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also wenn es eine Lokale URL ist, dann kann man eine Browser Weiche anhand des User-Agent auch ausschließen, oder?

Aber ich glaube ja nicht das es an urllib liegt... Wäre ja eine eingebaute Filter-Funktion ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Martina

Das html kommt aus einem lokalen Mascot - Server: http://www.matrixscience.com/
Glaube also eigentlich auch nicht an Browserweichen.

Aber was könnte es denn noch sein?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Du könntest mal mit http://www.networkchemistry.com/products/packetyzer/ nachsehen, welche Daten wirklich über die Leitung gehen... Einmal mit urllib und einmal mit dem Browser...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Martina

Danke für den link, sieht leider nicht so einfach aus, als würde ich das nebenbei noch eben vor Feierabend schaffen. Aber morgen dann!

Grüße
Martina
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ja einfach ist das Tool nicht, aber ein Packet-Sniffer kann auch nicht viel einfacher sein, denke ich... Irgendwie muß man da halt rausfiltern welche Daten für einen wichtig sind. Gerade wenn im Netz viele Daten durchrasseln, ist es nicht gerade einfach...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Ja einfach ist das Tool nicht, aber ein Packet-Sniffer kann auch nicht viel einfacher sein, denke ich...
Nein, vor allem wenn man Packetyzer mit dem Postscanner auf dem er aufbaut vergleicht: Ethereal.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Noch eine Idee woran es liegen könnte: Enthalten die Seiten vielleicht JavaScript, das diese div-Tags erst im Browser erzeugt?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

BlackJack hat geschrieben:JavaScript, das diese div-Tags erst im Browser erzeugt?
Dann siehst du diese aber nicht direkt in den Sourcen. Aber ich glaub im DOM inspector...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Martina

Grad wollte ich mit dem Packetyzer anfangen, da habe ich es nochmal schnell als Mozilla probiert und da sind sie, die Divs!

Code: Alles auswählen

opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
handle = opener.open(filename)
Wahrscheinlich hatte ich bei dem Versuch als Explorer einfach Mist gebaut.
Trotzdem allen vielen Dank - gut zu wissen, das es solche tools wie Packetyzer gibt.

Grüße
Martina

Edit (Leonidas): Code in Python-Tags gesetzt.
Antworten