0

urllib2を使用してページを開こうとしています

 req = urllib2.Request("http://1033kissfm.com",
        headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0'})
 response = urllib2.urlopen(req)
 rstPage = response.read()

応答は

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.0.3</center>
</body>
</html>

しかし、ブラウザでこのURLを開くと、正常に機能しています。これがURLです。

http://1033kissfm.com

ブラウザでは、にリダイレクトされます

http://www.1033kissfm.com/pages/main

ページ。

4

1 に答える 1

0

ライブラリはリダイレクトの処理をサポートしていないと思うので、問題を解決しました。このコードは、適切な応答を取得するためのリダイレクトを見つけるのに役立ちます

def get_hops(url):
    redirect_re = re.compile('<meta[^>]*?url=(.*?)["\']', re.IGNORECASE)
    hops = []
    while url:
            if url not in hops:
                hops.insert(0, url)
            response = urllib2.urlopen(url)
            if response.geturl() != url:
                hops.insert(0, response.geturl())
                # check for redirect meta tag
            match = redirect_re.search(response.read())
            if match:
                url = urlparse.urljoin(url, match.groups()[0].strip())
            else:
                url = None
    return hops
于 2012-07-29T12:02:32.720 に答える