概要
Pythonの練習がてら作った簡単なHTTPクライアント
環境
Python 3.4.3
使い方
コマンドがpython3になってる人は適宜読み替えてください
$python http1.0.py 'ipアドレス' '返ってきたhtmlを保存するファイル名'
補足
ヘッダーの読み飛ばしを記述するのが面倒だったので、とりあえず全部読み込んであとから改行が2連続の部分を前から検索してスライスで切り落としました。
例外はとりあえず全部キャッチするスタイルでやってます。
ソースコード
http1.0.py
import socket
import sys
import traceback
def main():
#Set max buffer size
max_size = 8192
argv = sys.argv
argc = len(argv)
#Check commandline parameter
if(argc != 3):
sys.stderr.write('Usage: python http1.0.py [ADDRESS] [FILE]\nor\n')
sys.stderr.write('Usage: python3 http1.0.py [ADDRESS] [FILE]\n')
exit()
address = (argv[1], 80)
filename = argv[2]
try:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Create socket
client.connect(address) #Connect
client.sendall(b'GET / HTTP/1.0\r\n\r\n') #Send GET command
data = client.recv(max_size).decode('utf-8') #Receive data and decode
client.close() #Close
#Cut header
index = data.find('\r\n\r\n')
data = data[index:]
#Write HTML file
fout = open(filename, 'w')
fout.write(data)
fout.close()
except:
sys.stderr.write(traceback.format_exc())
exit()
if __name__ == '__main__':
main()