Seite 1 von 1
urlretrieve lädt nicht richtig runter
Verfasst: Freitag 7. August 2009, 09:37
von Krauzi
Hallo, ich möchte eine datei mit urlretrieve downloaden, nur lädt er irgendwie nur 503 byte runter.
Mit file.write(urlopen(link).read(), "wb") habe ich es auch bereits versucht, nur hier ebenfalls nur 503 byte.
Jemand einen heißen tipp für mich?
Verfasst: Freitag 7. August 2009, 09:44
von lutz.horn
Kannst Du ein paar Details posten: Code, URL?
Verfasst: Freitag 7. August 2009, 09:51
von Krauzi
tut mir leid dass das jetzt wahrscheinlich ober noobig ausgucken wird:
Code: Alles auswählen
import urllib
f = urllib.urlopen("http://www.getdota.com")
s = f.read()
verStart = 'Latest Map: <span class="version">'
verEnd = '</span></div>'
ver = s[s.find(verStart) + len(verStart):s.find(verEnd, s.find(verStart))]
print "Newest Dota: %s" % ver
f.close()
f = urllib.urlopen("http://www.getdota.com/download/map/" + ver)
s = f.read()
linkStart = "<script>document.location.href='"
linkEnd = "';</script>"
link = s[s.find(linkStart) + len(linkStart):s.find(linkEnd, s.find(linkStart))]
f.close()
urllib.urlretrieve(link, "DotA Allstars v" + ver + ".w3x")
[/code]
Verfasst: Freitag 7. August 2009, 10:17
von lutz.horn
OK, Du versuchst also aktuell den Inhalt der URL
Code: Alles auswählen
http://ineedwahwah.com/getdota/eng/DotA Allstars v6.61c.w3x
in die Datei 'DotA Allstars v6.61c.w3x' zu speichern. Diese URL liefert einen 404er folgenden Inhalt.
Code: Alles auswählen
<link href=http://ineedwahwah.com/z.css rel="stylesheet" type="text/css">
<center>
<div id=logo >
<center><table><tr><td width=500 height=25 background="http://ineedwahwah.com/pic/bg.png" align=right valign=middle>
<a href="http://ineedwahwah.com/"><strong>ineedwahwah.com</strong></a>
</td></tr></table></center>
</div>
<div id=menu >
<a href="index.html">main</a>
</div>
<div id=main >
error...
</div>
<div id=credit >
<center><font size=1> created by z </font></center>
</div>
</center>
Ist das das, was Du erwartest?
Verfasst: Freitag 7. August 2009, 10:22
von Krauzi
lutz.horn hat geschrieben:OK, Du versuchst also aktuell den Inhalt der URL
Code: Alles auswählen
http://ineedwahwah.com/getdota/eng/DotA Allstars v6.61c.w3x
in die Datei 'DotA Allstars v6.61c.w3x' zu speichern. Diese URL liefert einen 404er folgenden Inhalt.
Code: Alles auswählen
<link href=http://ineedwahwah.com/z.css rel="stylesheet" type="text/css">
<center>
<div id=logo >
<center><table><tr><td width=500 height=25 background="http://ineedwahwah.com/pic/bg.png" align=right valign=middle>
<a href="http://ineedwahwah.com/"><strong>ineedwahwah.com</strong></a>
</td></tr></table></center>
</div>
<div id=menu >
<a href="index.html">main</a>
</div>
<div id=main >
error...
</div>
<div id=credit >
<center><font size=1> created by z </font></center>
</div>
</center>
Ist das das, was Du erwartest?
hm im browser klappt der download mit dem generierten link, nur anscheinend nicht mit python.
Verfasst: Freitag 7. August 2009, 10:26
von lutz.horn
Vielleicht erwartet der Server einen spezielle User-Agent-Header? Denkbar ist alles

Verfasst: Freitag 7. August 2009, 10:26
von BlackJack
@Krauzi: Da sind Leerzeichen in der "URL", damit ist's aber keine gültige URL. Im Browser geht das, weil der die vor dem Absenden der Anfrage entsprechend kodiert, weil der gewohnt ist, von Menschen "Schrott" zu bekommen und versucht den vor der Verwendung zu bereinigen.
Verfasst: Freitag 7. August 2009, 10:31
von Krauzi
gaaaaaaaaaaaanz genau, du kamst mir blos eine sekunde zuvor.
Ich hatte das problem schon mal und deshalb habe ich es auch gerade selbst gelöst.
An leute die evtl man das selbe problem haben sollten:
aus den
leerzeichen müssten %20 gemacht werden, das geschieht so:
@lutz.horn:
das wäre auch eine denkbare möglichkeit gewesen, der server könnte einen .w3x handler für php machen. Dann könnte er untersuchen, ob die anfrage überhaupt von einem browser ausgeht und dann erst den header setzen.
Verfasst: Freitag 7. August 2009, 11:09
von Rebecca
Code: Alles auswählen
>>> urllib.quote("www.test.hallo welt.html")
'www.test.hallo%20welt.html'
Verfasst: Samstag 8. August 2009, 09:40
von Leonidas
Rebecca, deine Welt ist echt komisch, mit Leerzeichen im Domainnamen und .html als TLD, da grustelts einen fast schon
