urllib2获取网页

时间:2013-03-13 11:25:15

标签: python urllib2 fetch web-crawler

我有一个让我发疯的问题。我正在使用urllib2来获取许多网址。有一个网址有时会回到我的整个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)

为什么会这样?我哪里做错了? (我不想在这个网址上使用selenium,我想使用urllib2)

1 个答案:

答案 0 :(得分:4)

我从该网址获得了200和301(Moved Permanently)个响应,所以这是服务器的事情。

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

...
response = urllib2.urlopen(req)
if response.geturl() == url:
  // no redirect occurred
else:
  // a redirect occurred because the url has changed

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