2016-05-18 5 views
1

私はいくつかのページを読むのにPython urllib2を使用しようとしていますが、与えられた異なるURLが同じページを返しました。Python - urllib2を使用して異なるURLを読むと同じ結果が返されましたか?

このページは、recreation.govから特定のキャンプ場のキャンプ場の空き状況を確認するためのものです。キャンプ場にはたくさんのキャンプ場があるかもしれないので、URLの最後のインデックスは、表示されるキャンプ場の数をページに表示します。

たとえば、startIdx=0の場合、ページにはキャンプサイト1〜25が表示され、startIdx=25にはキャンプサイト26〜50が表示されます。

startIdxでいくつかのURLを構築しましたが、urllib2を使用してページを読むと、返されたHTMLはすべて同じでした。何とかURL内のstartIdxが無視されたようです。

さらに、これらのURLを手動でブラウザで開くとページは正常に見えますが、私がwebbrowser.openを使用してページを表示すると奇妙に見えます。

簡単なサンプルコードでは、私がいる問題を複製:

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 

私は物事が問い合わせやPHP関連のものでどのように機能するかについての他の知識を持っていません。だから私はなぜurllib2がこのように振る舞うのか不思議です。私が使っているPythonのバージョンは2.7

ありがとう!

答えて

1

Webページは実行時に変更される可能性がありますが、HTMLは要求しているだけです。おそらく、URLエンコードされた情報に基づいてページの内容を変更するJavaScriptがあります。コンテンツがPHPでサーバー側にロードされていた場合、送信前にサーバーがHTMLを変更するため、コンテンツが要求と共に表示されます。 JavaScriptは送信後HTMLを変更します。

つまり、通常のブラウザでは、JavaScriptを使用してURLに基​​づいてHTMLが変更されます。あなたの単純な要求はそれをしません。

+0

ようこそStackOverflow。あなたが提供する説明は、この問題を明らかにするかもしれませんが、質問に対する答えとしては十分ではありません。このような場合にはコメントを使用することを検討してください。また、あなたの答えの技術的/事実的な正確さにいくつかの問題があります。あなたが意味のある答えを出すには、実際に問題をさらに調査する必要があります。 – ishmaelMakitla

+0

リクエストされたHTMLにすべてのキャンプサイトの情報が含まれていますが、ブラウザがそれに基づいてそれを表示する方法を変更したことを意味しましたか?いいえ、 URLの「startIdx」?私の質問に欠けていた情報の一部は、 'startIdx'が' startIdx = 0'と同じページを返したという点で異なっています。 – fengly20

+1

@ fengly20あなたがリクエストしたHTMLにはおそらくキャンプサイトに関する情報は含まれていません。ページがロード可能な状態になると、データはJavaScript経由でロードされます。あなたが使っているものはまったく読み込まれません。 – ritlew

関連する問題