2016-07-18 9 views
0

Ich benutze BeautifulSoup, um eine Webseite zu scrappen. Wenn ich jedoch den Aufruf (unter Verwendung von urllib2 + Python 3.4) in einem Browser tätige, ändert sich die URL bei jedem erneuten Aufruf auf eine eindeutige GUID. Für z. Wenn ich den Anruf http://www ..COM mache, ändert es sich in http://www ..com/DYNAMIC/ID = {GUID wie Zeichenfolge}. Bei allen nachfolgenden Aufrufen von Links auf der Seite wird diese ID an die Anrufe angehängt. Die GUID-ähnliche Zeichenfolge ändert sich bei jedem Aufruf des Browsers. Gibt es eine Möglichkeit, die dynamische Verbindung mit der GUID-ähnlichen Zeichenfolge nach einem Aufruf der Site zu erhalten? Ich versuche, mein Skript unaufdringlich zu machen, also möchte ich das kopflos machen (z. B. vermeiden, Selenium zu verwenden).Wie können wir in Pythons URLlib eine URL erhalten, die nach dem Anruf aktualisiert wird?

+0

Fast sicher, dass Sie einen benutzerdefinierten Http-Öffner, so etwas wie 'urllib.request.HTTPRedirectHandler' bauen müssen,' urllib.request.HTTPHandler'. Vielleicht möchten Sie auch ein urllib.request.HTTPCookieProcessor registrieren ... – felipsmartins

Antwort

1

Die .geturl() Methode existiert genau für diesen Zweck:

from urllib2 import urlopen 
print urlopen(url).geturl() 
+0

Sorry, das scheint nicht zu funktionieren. Ein Aufruf von urllib.request.urlopen ('http: // www. .com'). Geturl() erreicht eine vorläufige URL - http: // www. .com/DYNAMIC aber das ist es. Aber ein weiterer Aufruf von .geturl(), der dies verwendet, geht nicht weiter. Die URL sieht, wenn sie in einem Browser geöffnet wird, ungefähr so ​​aus: http: // www. .com/DYNAMIC/index.asp? CartId = {GUID Zeichenfolge} ..... Vielleicht hat der index.asp etwas damit zu tun? – user1554876

+0

@ user1554876 Hmm, vielleicht müssen Sie Cookies mit Ihrer Anfrage senden ... Oder vielleicht ist JavaScript beteiligt, in diesem Fall müssen Sie Selenium verwenden. –