pycurlとlibcurlのドキュメントの調査に時間を費やしても、pycurlでHTTPステータスメッセージ(reason-phrase)を取得する(簡単な)方法がまだ見つかりません。
ステータスコードは簡単です:
import pycurl
import cStringIO
curl = pycurl.Curl()
buff = cStringIO.StringIO()
curl.setopt(pycurl.URL, 'http://example.org')
curl.setopt(pycurl.WRITEFUNCTION, buff.write)
curl.perform()
print "status code: %s" % curl.getinfo(pycurl.HTTP_CODE)
# -> 200
# print "status message: %s" % ???
# -> "OK"
自分で解決策を見つけました。これは必要なことを実行しますが、より堅牢になる可能性があります(HTTPで機能します)。
これは、pycurl.HEADERFUNCTION
によって取得されたキャプチャされたヘッダーにステータス行が含まれているという事実に基づいています。
import pycurl
import cStringIO
import re
curl = pycurl.Curl()
buff = cStringIO.StringIO()
hdr = cStringIO.StringIO()
curl.setopt(pycurl.URL, 'http://example.org')
curl.setopt(pycurl.WRITEFUNCTION, buff.write)
curl.setopt(pycurl.HEADERFUNCTION, hdr.write)
curl.perform()
print "status code: %s" % curl.getinfo(pycurl.HTTP_CODE)
# -> 200
status_line = hdr.getvalue().splitlines()[0]
m = re.match(r'HTTP\/\S*\s*\d+\s*(.*?)\s*$', status_line)
if m:
status_message = m.groups(1)
else:
status_message = ''
print "status message: %s" % status_message
# -> "OK"
これは古いスレッドですが、私は同様の情報を探してここに来ました。 200、404、500など、探しているステータスコードだけの場合は、次のようにします。
your_curl_handle.getinfo(pycurl.RESPONSE_CODE)
数値のステータスコードを返す必要があります:)
Human_curlライブラリを使用して簡単なコードを作成できると思います。
>>> import human_curl as hurl
>>> r = hurl.get('http://example.org')
>>> print r.status_code
200
あなたが得ることができるhuman_curlに関する完全なドキュメント https://github.com/Lispython/human_curl