Python - 使用urllib2读取不同的URL返回相同的结果?

时间:2016-05-18 20:25:23

标签: python urllib2

我正在尝试使用Python urllib2来阅读某些页面,但是对于给定的不同网址,我们返回了相同的页面。

该页面是对来自recreation.gov的特定露营地的营地可用性的查询。由于露营地可能有很多露营地,因此url中的最后一个索引会告诉该页面将列出多少个露营地。

例如,如果startIdx=0页面列出了露营地1~25,如果startIdx=25该页面列出露营地26~50。

所以我使用不同的startIdx构建了一些网址,但在使用urllib2阅读网页后,返回的html都是相同的 - 似乎某种方式忽略了网址中的startIdx

此外,如果我在浏览器中手动打开这些网址,页面看起来很正常,但如果我使用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 个答案:

答案 0 :(得分:0)

网页可能会在运行时更改,而您只是在请求HTML。可能有一些JavaScript根据URL编码信息更改页面内容。如果内容是使用PHP在服务器端加载的,那么它将随请求一起出现,因为服务器在发送之前更改了HTML。 JavaScript会在发送后更改HTML。

换句话说,常规浏览器将使用JavaScript基于URL更改HTML。你的简单要求不会那样做。