私はPythonを初めて使用し、いくつかの新しいモジュールを学習しようとしています。幸運にも不幸にも、私はurllib2モジュールを手に取り、問題を引き起こしている1つのURLでそれを使い始めました。
まず、Requestオブジェクトを作成してから、応答オブジェクトでRead()を呼び出しました。失敗していました。リダイレクトされていることが判明しましたが、エラーコードはまだ200です。何が起こっているのかわかりません。これがコードです-
def get_url_data(url):
print "Getting URL " + url
user_agent = "Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 Firefox/14.0.1"
headers = { 'User-Agent' : user_agent }
request = urllib2.Request(url, str(headers) )
try:
response = urllib2.urlopen(request)
except urllib2.HTTPError, e:
print response.geturl()
print response.info()
print response.getcode()
return False;
else:
print response
print response.info()
print response.getcode()
print response.geturl()
return response
上記の関数をhttp://www.chilis.com "で呼び出しています。
私は301、302、または303を受け取ることを期待していましたが、代わりに200が表示されます。これが表示される応答です-
Getting URL http://www.chilis.com
<addinfourl at 4354349896 whose fp = <socket._fileobject object at 0x1037513d0>>
Cache-Control: private
Server: Microsoft-IIS/7.5
SPRequestGuid: 48bbff39-f8b1-46ee-a70c-bcad16725a4d
X-SharePointHealthScore: 0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 14.0.0.6120
X-MS-InvokeApp: 1; RequireReadOnly
Date: Wed, 13 Feb 2013 11:21:27 GMT
Connection: close
Content-Length: 0
Set-Cookie: BIGipServerpool_http_chilis.com=359791882.20480.0000; path=/
200
http://www.chilis.com/(X(1)S(q24tqizldxqlvy55rjk5va2j))/Pages/ChilisVariationRoot.aspx?AspxAutoDetectCookieSupport=1
誰かがこのURLが何であるか、そしてこれをどのように処理するかを説明できますか?Diveintopython.netの「HandlingRedirects」セクションを使用できることはわかっていますが、そのページのコードでも同じ応答200が表示されます。
編集:DiveintoPythonのコードを使用すると、一時的なリダイレクトが表示されます。私が理解していないのは、コードからのHTTPエラーコードが200である理由です。これが実際のリターンコードではないでしょうか。
EDIT2:よく見えたので、奇妙なリダイレクトではありません。タイトルを編集しています。
EDIT3:urllib2が自動的にリダイレクトに従う場合、次のコードがchilis.comのフロントページを取得しない理由がわかりません。
docObj = get_url_data(url)
doc = docObj.read()
soup = BeautifulSoup(doc, 'lxml')
print(soup.prettify())
ブラウザが最終的にリダイレクトされるURLを使用すると、機能します(http://www.chilis.com/EN/Pages/home.aspx ")。