inhalt einer internetseite abrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Abooya
User
Beiträge: 8
Registriert: Freitag 5. Mai 2006, 15:29

inhalt einer internetseite abrufen

Beitragvon Abooya » Freitag 5. Mai 2006, 15:34

hallo, ich beschäftige mich noch nicht lange mit python, und hätte dementsprechend eine dumme frage :P :
Wenn ich einen httpsocket geöffnet und eine anfrage ausgeführt habe,sieht mein code in etwa so aus:

Code: Alles auswählen

import httplib, Image, os, random

socket = httplib.HTTPConnection('lalilu.de', 80)

header = {'User_Agent': 'Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)'}

socket.request('GET', '/abc.php?xyz=123', '', header)
response = socket.getresponse()


wie kann ich jetzt aber den inhalt der seite abc.php?xyz=123 abrufen?

ich wäre dankbar, wenn jemand einem noob wie mir helfen könnte . :wink:

mit freundlichen Grüssen
Abooya
ryu
User
Beiträge: 41
Registriert: Dienstag 7. Februar 2006, 19:34

Beitragvon ryu » Freitag 5. Mai 2006, 15:39

Hi,
das müsste so am einfachsten gehen:

Code: Alles auswählen

>>> from urllib import urlopen
>>> page = urlopen('http://google.de')
>>> print(page.read())
<html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title>...


Alternativ hat auch dein "response" Objekt eine Methode namens "read", mit der du den Inhalt auslesen kannst.

Chris
Abooya
User
Beiträge: 8
Registriert: Freitag 5. Mai 2006, 15:29

Beitragvon Abooya » Freitag 5. Mai 2006, 16:01

vielen dank, ich habe es gerade in der shell ausprobier und es hat super funktioniert. :)
jetzt hätte ich aber noch eine frage. in der seite, die ich auslese, ist die url einer weiteren seite, wenn ich allerdings versuche diese auszulesen, bekomme ich folgenden error:

Code: Alles auswählen

<bound method _fileobject.read of <socket._fileobject object at 0x00A65590

woran könnte das liegen? hat es etwas damit zu tun, dass auf der seite serverseitig weitergeleitet wird?
Schonmal danke im vorraus!

// Die Bytekennzeichnung variiert natürlich
mfg
Abooya
ryu
User
Beiträge: 41
Registriert: Dienstag 7. Februar 2006, 19:34

Beitragvon ryu » Freitag 5. Mai 2006, 16:08

Du hast vermutlich

Code: Alles auswählen

obj.method

darum wurde nur das Objekt was sich hinter der Methode verbirgt angezeigt. Um die Methode richtig aufzurufen, müsstest du

Code: Alles auswählen

obj.method()

eingeben.
Abooya
User
Beiträge: 8
Registriert: Freitag 5. Mai 2006, 15:29

Beitragvon Abooya » Freitag 5. Mai 2006, 16:11

ja, du hast recht. nochmals vielen dank, jetzt funktioniert alles :D
// oder zumindest fast alles :(
ich schaffe es jetzt zwar, die seite anzeigen zu lassen, allerdings meint er nun, ich sollte Cookies zulassen, damit er die Php-Sessionid drin ablegen kann. die frage ist nur: wie moduliere ich in python cookies?
es wäre wirklich supernett, wenn mir nochmal jemand helfen könnte.

mfg
Abooya
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 5. Mai 2006, 17:35

Abooya hat geschrieben:wie moduliere ich in python cookies?

Es gibt die Module Cookie und cookielib.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 5. Mai 2006, 17:55

Abooya hat geschrieben:ich sollte Cookies zulassen, damit er die Php-Sessionid drin ablegen kann.

Hi Abooya!

Probiers damit: http://wwwsearch.sourceforge.net/ClientCookie/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Abooya
User
Beiträge: 8
Registriert: Freitag 5. Mai 2006, 15:29

Beitragvon Abooya » Freitag 5. Mai 2006, 18:31

ich habe jetzt einen bekannten gefragt, und er meinte, dass ich einfach

Code: Alles auswählen

header['cookie'] = 'PHPSESSID=' + sessid
in verbindung mit der socket-variante machen soll. ich probiers mal aus.

// btw: gibt es in Python etwas wie 'getChar()' in C?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 5. Mai 2006, 19:18

Abooya hat geschrieben:gibt es in Python etwas wie 'getChar()' in C?

Für die C-Unkundigen: was tut getChar()?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 5. Mai 2006, 19:39

Abooya hat geschrieben:

Code: Alles auswählen

header['cookie'] = 'PHPSESSID=' + sessid

// btw: gibt es in Python etwas wie 'getChar()' in C?


String-Operation ist nicht gemeint, oder?

Code: Alles auswählen

header['cookie'] = 'PHPSESSID= %s'  % sessid


Oder vielleicht nur ASCII-Zeichen extrahieren:
http://www.python-forum.de/topic-5861.html

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Abooya
User
Beiträge: 8
Registriert: Freitag 5. Mai 2006, 15:29

Beitragvon Abooya » Freitag 5. Mai 2006, 19:43

getChar() hält das Programm einfach solange an, bis eine taste gedrückt wird :wink:
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 5. Mai 2006, 19:44

Dafür reicht ein raw_input() Allerdings muß man dann ENTER drücken... Was anderes kenn ich allerdings spontan nicht... Wobei, vielleicht sys.stdin.read(1) ???
Zuletzt geändert von jens am Freitag 5. Mai 2006, 19:54, insgesamt 1-mal geändert.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
icepacker
User
Beiträge: 49
Registriert: Dienstag 15. November 2005, 18:48

Beitragvon icepacker » Freitag 5. Mai 2006, 19:52

Abooya hat geschrieben:getChar() hält das Programm einfach solange an, bis eine taste gedrückt wird :wink:

:roll: *schüttel*

1. Heißt es getchar()
2. Liest die Funktion ein Zeichen von der Standardeingabe und gibt den ASCII
Wert des Zeichens zurück.
ubuntu linux !!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 5. Mai 2006, 19:54

jens hat geschrieben:Was anderes kenn ich allerdings spontan nicht...

Aber ich: msvcrt.getch() ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 5. Mai 2006, 19:55

Leonidas hat geschrieben:msvcrt.getch() ;)

Availability: Windows.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]