Python Language
ウルリブ
サーチ…
HTTP GET
Python 2.x 2.7
Python 2
import urllib
response = urllib.urlopen('http://stackoverflow.com/documentation/')
urllib.urlopen()
を使うとレスポンスオブジェクトが返されます。これはファイルと同様に扱うことができます。
print response.code
# Prints: 200
response.code
は、httpの戻り値を表します。 200はOK、404はNotFoundなど
print response.read()
'<!DOCTYPE html>\r\n<html>\r\n<head>\r\n\r\n<title>Documentation - Stack. etc'
response.read()
とresponse.readlines()
は、リクエストから返された実際のhtmlファイルを読み込むために使用できます。これらのメソッドは、 file.read*
Python 3.x 3.0
Python 3
import urllib.request
print(urllib.request.urlopen("http://stackoverflow.com/documentation/"))
# Prints: <http.client.HTTPResponse at 0x7f37a97e3b00>
response = urllib.request.urlopen("http://stackoverflow.com/documentation/")
print(response.code)
# Prints: 200
print(response.read())
# Prints: b'<!DOCTYPE html>\r\n<html>\r\n<head>\r\n\r\n<title>Documentation - Stack Overflow</title>
モジュールはPython 3.x用に更新されましたが、ユースケースは基本的に同じです。 urllib.request.urlopen
は同様のファイルのようなオブジェクトを返します。
HTTP POST
POSTデータには、エンコードされたクエリ引数をデータとしてurlopen()に渡します。
Python 2.x 2.7
Python 2
import urllib
query_parms = {'username':'stackoverflow', 'password':'me.me'}
encoded_parms = urllib.urlencode(query_parms)
response = urllib.urlopen("https://stackoverflow.com/users/login", encoded_parms)
response.code
# Output: 200
response.read()
# Output: '<!DOCTYPE html>\r\n<html>\r\n<head>\r\n\r\n<title>Log In - Stack Overflow'
Python 3.x 3.0
Python 3
import urllib
query_parms = {'username':'stackoverflow', 'password':'me.me'}
encoded_parms = urllib.parse.urlencode(query_parms).encode('utf-8')
response = urllib.request.urlopen("https://stackoverflow.com/users/login", encoded_parms)
response.code
# Output: 200
response.read()
# Output: b'<!DOCTYPE html>\r\n<html>....etc'
コンテンツタイプのエンコーディングに従って受信バイトをデコードする
受け取ったバイトは正しい文字エンコーディングでデコードしてテキストとして解釈する必要があります:
Python 3.x 3.0
import urllib.request
response = urllib.request.urlopen("http://stackoverflow.com/")
data = response.read()
encoding = response.info().get_content_charset()
html = data.decode(encoding)
Python 2.x 2.7
import urllib2
response = urllib2.urlopen("http://stackoverflow.com/")
data = response.read()
encoding = response.info().getencoding()
html = data.decode(encoding)
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow