2016-05-18 7 views
1

Ich versuche, Python urllib2 zu verwenden, um einige Seiten zu lesen, aber für bestimmte URLs zurückgegeben die gleiche Seite.Python - Das Lesen von verschiedenen URLs mit urllib2 ergab die gleichen Ergebnisse?

Die Seite ist eine Anfrage für die Verfügbarkeit des Campingplatzes für einen bestimmten Campingplatz von recreation.gov. Da es auf einem Campingplatz viele Campingplätze geben kann, teilt der letzte Index in url der Seite mit, wie viele Campingplätze aufgelistet werden.

Zum Beispiel listet die Seite startIdx=0 Campingplatz 1 ~ 25, und wenn startIdx=25 die Seite listet Campingplatz 26 ~ 50.

So baute ich einige Urls mit verschiedenen startIdx aber urllib2 nach der Verwendung der Seite zu lesen, die zurück html waren alle gleich - es scheint irgendwie die startIdx in URL wurde ignoriert.

Außerdem, wenn ich diese URLs im Browser manuell öffnen, sehen die Seiten normal aus, aber wenn ich webbrowser.open verwende, um diese URLs zu öffnen, sehen die Seiten komisch aus.

Der kurze Beispielcode dupliziert das Problem, das ich habe:

import urllib2 

url1 = 'http://www.recreation.gov/campsiteCalendar.do?page=calendar&contractCode=NRSO&parkId=70928&calarvdate=03/11/2016&sitepage=true&startIdx=0' 
url2 = 'http://www.recreation.gov/campsiteCalendar.do?page=calendar&contractCode=NRSO&parkId=70928&calarvdate=03/11/2016&sitepage=true&startIdx=25' 

hdr = {'User-Agent': 'Mozilla/5.0'} 
request1 = urllib2.Request(url1, headers = hdr) 
response1 = urllib2.urlopen(request1)  
html1 = response1.read() 

request2 = urllib2.Request(url2, headers = hdr) 
response2 = urllib2.urlopen(request2)  
html2 = response2.read() 

In [1]:html1 == html2 
Out[2]: True 

Ich habe keine andere Wissen darüber, wie die Dinge funktionieren in Anfragen und PHP Sachen zusammen. Also ich bin neugierig, warum verhält sich urllib2 so. Die Python-Version, die ich verwende, ist 2.7

Vielen Dank!

Antwort

1

Die Webseite kann sich während der Laufzeit ändern, während Sie nur HTML anfordern. Es gibt wahrscheinlich einige JavaScript, die den Inhalt der Seite basierend auf den URL-codierten Informationen ändert. Wenn der Inhalt serverseitig mit PHP geladen wurde, wäre er mit der Anfrage vorhanden, da der Server den HTML-Code vor dem Senden ändert. JavaScript ändert den HTML-Code nach dem Senden.

Mit anderen Worten, ein normaler Browser wird den HTML-Code basierend auf der URL mit JavaScript ändern. Ihre einfache Anfrage wird das nicht tun.

+0

Willkommen bei StackOverflow. Obwohl die Erklärung, die Sie zur Verfügung stellen, vielleicht etwas Licht in das Thema bringt, reicht das nicht aus, um die Frage zu beantworten. Bitte denken Sie über Kommentare in solchen Fällen nach. Es gibt auch einige Probleme mit der technischen/sachlichen Richtigkeit Ihrer Antwort. Sie müssen das Problem selbst weiter untersuchen, wenn Sie eine sinnvolle Antwort geben möchten. Siehe [wie man eine gute Antwort schreibt] (http://stackoverflow.com/help/how-to-answer) – ishmaelMakitla

+0

Meinst du, der HTML-Code, den ich angefordert habe, enthält alle Informationen zu den Campingplätzen, aber der Browser ändert die Art und Weise, ihn anzuzeigen, basierend auf dem ' startIdx' in der URL? Ein bisschen Information, die ich in meiner Frage verpasst habe, ist anders. "StartIdx" hat dieselbe Seite zurückgegeben wie "startIdx = 0". – fengly20

+1

@ fengly20 Der von Ihnen angeforderte HTML enthält wahrscheinlich keine Informationen über die Campingplätze. Die Daten werden wahrscheinlich über JavaScript geladen, sobald die Seite zum Laden bereit ist. Was Sie verwenden, wird es überhaupt nicht laden. – ritlew

Verwandte Themen