2016-07-29 33 views
0

Dieses Stück Code ruft den Inhalt einer Seite von Google Movies:Verschiedene Crawling Verhalten auf Ubuntu und Windows

import urllib2 
f = urllib2.urlopen("https://www.google.com/movies?hl=fr&tid=4f451a87a71bfa51&date=0") 
print(f.read()) 

es richtig, die Filme in diesem Theater geplant enthält, wenn ich das Skript auf meinem Windows-PC laufen. Aber ich habe versucht, das Skript auf 3 verschiedenen Ubuntu-Servern auszuführen, und jedes Mal, wenn der Inhalt zurückgegeben wird, ist eine wohlgeformte Seite, auf der steht, dass momentan keine Filme geplant sind.

Wissen Sie, was diesen Unterschied im Verhalten von nur 3 Codezeilen verursachen kann? Ich habe auch versucht urllib.urlopen und die Ausgabe ist die gleiche.

Antwort

1

Es hat nichts mit dem Betriebssystem selbst oder mit Python im Allgemeinen zu tun. Ich habe versucht, auf diese URL von einem Windows-Rechner in einem Browser zuzugreifen und habe auch etwas in Richtung "Keine Filme gefunden" (benutzter Google-Übersetzer, da ich kein Französisch spreche).

Ich vermute, dass diese URL ortsabhängig ist. Wenn Sie über Ihren Windows-Computer darauf zugegriffen haben, hat es Ihren Standort gefunden (tatsächlicher Standort oder eine Schätzung basierend auf Ihrer IP-Adresse).

Wenn Sie versucht haben, über Ihre Linux-Computer darauf zuzugreifen, konnte Ihr Standort nicht bestimmt werden (oder er hat entschieden, dass Ihr Standort "falsch" ist), so dass er keinen Theaterplan erfüllt.

+0

Interessant! Wie hat es meinen Standort bestimmt, basiert es nur auf dem IP? Gibt es eine Problemumgehung, die getan werden kann, um das Skript funktionieren zu lassen, wie das Vortäuschen der IP oder des Standorts? – Arnaud

+0

@Arnaud Es ist höchstwahrscheinlich IP-basierte Geolocation. Sie können Ihre IP mit einem VPN oder einem Proxy "fälschen". Eine Google-Suche nach diesen Begriffen sollte Sie in die richtige Richtung lenken. – DeepSpace