Python urllib2获取网页

Python urllib2获取网页,python,urllib2,fetch,web-crawler,Python,Urllib2,Fetch,Web Crawler,我有一个让我发疯的问题。我正在使用urllib2获取许多url。有一个url有时会在整个html页面中返回给我,有时不会。这是我的代码: def find_html(url): req = urllib2.Request(url) req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14')

我有一个让我发疯的问题。我正在使用urllib2获取许多url。有一个url有时会在整个html页面中返回给我,有时不会。这是我的代码:

def find_html(url):
    req = urllib2.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB;   rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14')
    page_html = urllib2.urlopen(req).read()

    n = string.find(page_html, "filter clearfix active")
    print "find element:",n

url = "http://it.hotels.com/ho113127/rome-cavalieri-waldorf-astoria-hotels-resorts-roma-italia/"
find_html(url)
为什么会这样?我哪里做错了?
(我不想在这个url中使用selenium,我想使用urllib2)

我从这个url中得到了200和301(
永久移动
)响应,所以这是一个服务器问题

由于
urllib2
将自动跟随重定向,如果您想阻止处理重定向页面(如果我理解正确,该页面不包含您想要的信息),则必须检查是否发生了重定向:


这取决于您的确切设置和您必须如何处理(因为对于某些URL,您可能实际上想要处理重定向页面)。

我从该URL获得200和301(
永久移动
)响应,因此这是服务器的事情

由于
urllib2
将自动跟随重定向,如果您想阻止处理重定向页面(如果我理解正确,该页面不包含您想要的信息),则必须检查是否发生了重定向:


这取决于您的确切设置和您必须如何处理(因为对于某些URL,您可能实际上希望处理重定向页面)。

如果它只是一个URL,可能就是该服务器?我怀疑这是Python或urllib2的问题。我认为是服务器的问题。对于这种URL,我有一个问题,如果它只是一个URL,可能是那个服务器?我怀疑这是Python或urllib2的问题。我认为是服务器的问题。对于这种URL,我有一个问题谢谢@robertklep。我如何看到返回给我的代码?我编辑了我的答案,因为我错误地认为
urllib2
无法处理重定向本身。如果我使用python请求,我会接受200次。。。我不明白…我不想处理重定向url,我只想处理原始url。为什么服务器有时重定向url,有时不重定向?谁知道:)这可能是服务器上的配置错误。谢谢@robertklep。我如何看到返回给我的代码?我编辑了我的答案,因为我错误地认为
urllib2
无法处理重定向本身。如果我使用python请求,我会接受200次。。。我不明白…我不想处理重定向url,我只想处理原始url。为什么服务器有时重定向url,有时不重定向?谁知道呢:)这可能是服务器上的配置错误。
...
response = urllib2.urlopen(req)
if response.geturl() == url:
  // no redirect occurred
else:
  // a redirect occurred because the url has changed