Ich versuche mich noch mehr in die urllib2 usw. einzuarbeiten und habe mir dazu unter anderem die 'Python Library Reference' angesehen.
Hier wird z.B. die urllib2 beschrieben '
http://docs.python.org/lib/module-urllib2.html'.
Ich finde die Dokumentation aber insgesamt sehr verwirrent: von anderen Programmiersprachen-Dokumentationen bin ich es gewohnt, dass u.a. Rückgabetypen angegeben werden. Hier fehlt das aber völlig. Z.B. weiss ich nach einem 'response = opener.open("
http://www.wieistmeineip.de/")' nicht genau was das 'response' genau ist und was es dann für Fähigkeiten hat. Lese ich die Dokumentation etwa falsch?
Aber zurück zu meinem eigentlichen Problem. Ich habe hier nun folgendes kleine Programm, den addHeader habe ich kurz wegen Fehlersuche auskommentiert:
Code: Alles auswählen
#!/usr/bin/env python
import urllib2
proxy_handler = urllib2.ProxyHandler({'http':'164.58.28.250'})
opener = urllib2.build_opener(proxy_handler)
#opener.addheaders = [('User-agent','Mozilla/5.0')]
response = opener.open("http://www.wieistmeineip.de/")
print response.read()
Für mich sieht der Code durchaus logisch aus: ich setze einen Proxy fest und rufe dann die angegebene website auf, wobei die Anfrage dann über den Proxy-Server läuft. Nur leider erscheint folgende Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "./onvista.py", line 11, in ?
response = opener.open("http://www.wieistmeineip.de/")
File "/usr/lib/python2.4/urllib2.py", line 358, in open
response = self._open(req, data)
File "/usr/lib/python2.4/urllib2.py", line 376, in _open
'_open', req)
File "/usr/lib/python2.4/urllib2.py", line 337, in _call_chain
result = func(*args)
File "/usr/lib/python2.4/urllib2.py", line 573, in <lambda>
lambda r, proxy=url, type=type, meth=self.proxy_open: \
File "/usr/lib/python2.4/urllib2.py", line 580, in proxy_open
if '@' in host:
TypeError: iterable argument required
Es wird ein 'iterable argument' erwartet bzw. benötig? Wer oder Was genau braucht so was und wieso? Habe ich etwa an einem Ort wo eine Liste hinkommt etwa fälschlicherweise einen anderen Datentyp verwendet?