Seitenquelltext von mrtzcmp3.net laden

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Wuuzzaa
User
Beiträge: 4
Registriert: Mittwoch 24. August 2011, 17:14

Hi,

ich bin gerade dabei einen Downloader für die Seite mrtzcmp3.net zu schreiben. Nur stoße ich nun auf das Problem , dass ich nicht den richtigen Seitenquelltext mit urllib.urlopen().read() bekomme sondern immer eine "Fehlermeldung" im Quelltext der Seite.

Am besten ein kleines Beispiel.
http://www.mrtzc-download-server1.asia/ ... uperheroes

von der Seite muss ich den Downloadlink bekommen.

Öffne ich die Seite mit einem Webbrowser kann ich den "richtigen" Seitenquelltext lesen und den benötigten Link auslesen.
Öffne ich die Seite mit Python 2.7 mit urllib.urlopen().read() bekomme ich jedoch nur folgendes als Seitenquelltext heraus.
<center>
<font size="4">ERROR 1001</font><br />
<font size="3">YOU ARE GETTING THIS ERROR BECAUSE OF ONE OF FOLLOWING REASONS:</font><br />
<font size="2">+ Serves is busy</font><br />
<font size="2">+ Page is deleted</font><br />
<font size="2">+ Page is under constraction</font><br /><br /><br />

</center>
Zu meiner Frage:
Wie bekommt der Server heraus , dass ich ihn mit "Python anspreche" und wie kann ich an den Downloadlink gelangen?

mfg

Wuuzzaa
deets

Ich bekomme denselben Fehler. Es kann sein, das die Seite den HTTP-Agenten auswertet, sowie eine session mittels Cookies implementiert. Und dadurch deeplinks sowie urrlib erstmal abweist.

Vielleicht solltest du das mal lieber mit mechanize versuchen.
lunar

Alternativ mit entsprechenden Browser-Erweiterungen (e.g. Live HTTP Headers und FireBug für Firefox) nachvollziehen, welche Daten bei der Weiterleitung auf die Download-Seite übertragen werden, und den Request dann in Python exakt nachbauen.
Wuuzzaa
User
Beiträge: 4
Registriert: Mittwoch 24. August 2011, 17:14

Danke für die Antworten. Habe mir mal mechanize angesehen. Bei einem Beispielskript wurden einfach die Header Dateien geändert. Würde das schon reichen - dann könnte ich auch auf die urllib2 lib zurückgreifen ?

class urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])

werde ich einfach mal ansehen und testen... FireBug werde ich mir auch mal ansehen.

Nochmal danke für die Tipps.

mfg

Wuuzzaa
Wuuzzaa
User
Beiträge: 4
Registriert: Mittwoch 24. August 2011, 17:14

Hi

habe es nun mit mechanize probiert - auch ohne Erfolg wieder die Fehlermeldung. Das Skript kam von http://stockrt.github.com/p/emulating-a ... mechanize/.
Darin wurden auch der User Agent Header verändert und ein Cookiejar angelegt.

Muss mir wohl mit Firebug die Seite genauer ansehen.

EDIT:

Das kam bei Firebug herraus wenn ich es richtig gemacht habe...
Host www.mrtzc-download-server1.asia
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Cookie sessioncode=a70710058f0e51b70c3cacf20dfc2a92; __utma=263764048.906006783.1314629697.1314629697.1314629697.1; __utmb=263764048.16.10.1314629697; __utmc=263764048; __utmz=263764048.1314629697.1.1.utmcsr=mrtzcmp3.net|utmccn=(referral)|utmcmd=referral|utmcct=/edguy__1s.html
wie hilft mir das nun weiter? Ich kann den User Agent ändern aber das dürfte nicht das meiste ändern...

mfg
Wuuzzaa
User
Beiträge: 4
Registriert: Mittwoch 24. August 2011, 17:14

Problem vorerst gelöst ;-)
hatte vergessen alle Seiten in den Cookiejar zu packen.

EDIT:

Hier mal der Code der zum richtigen Quelltext führt (auch ohne mechanize).

Code: Alles auswählen

import urllib2
import cookielib

url1 = "http://www.mrtzcmp3.net/edguy_1s.html"
url2 = "http://www.mrtzc-download-server1.asia/Edguy-The%20Devil%20and%20The%20Savant%20_1064m4428456.c60e76ba1312.5:28-PkRxJ0.395.html"
url3 = "http://www.mrtzc-download-server1.asia/MRTZCmp3?singer=Edguy&song=The%20Devil%20and%20The%20Savant"

# Cookie Jar
cj = cookielib.LWPCookieJar()

# Browser
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10')]

#Auslesen
source = opener.open(url1).read()
source = opener.open(url2).read()
source = opener.open(url3).read()

#Ausgeben
print source
Antworten