야후에 올라오는 특정 회사 주식 정보를 자동으로 받아와서 처리하려고 하는데

받아오는 부분을 파이썬으로 해결하려고 urllib 모듈을 익히기 시작했음


먼저 urlopen 불러오고

>>> from urllib.request import urlopen


Alphabet Inc. (GOOGL)의 과거 주가 정보 CSV 파일을 읽어들이고

>>> response = urlopen('http://chart.finance.yahoo.com/table.csv?s=GOOGL&a=7&b=7&c=2016&d=8&e=7&f=2016&g=d&ignore=.csv')


응답된 것의 내용을 한 번 바이트 코드로 화면으로 확인해 봄

>>> response.read()
b'Date,Open,High,Low,Close,Volume,Adj Close\n2016-09-06,798.390015,810.890015,795.429993,808.02002,1983000,808.02002\n2016-09-02,795.27002,797.099976,793.26001,796.869995,1347400,796.869995\n2016-09-01,791.97998,792.890015,786.330017,791.400024,1302000,791.400024\n2016-08-31,789.599976,791.570007,787.200012,789.849976,1066300,789.849976\n2016-08-30,792.880005,798.00,789.469971,791.919983,1166400,791.919983\n2016-08-29,793.049988,798.52002,790.320007,795.820007,766500,795.820007\n2016-08-26,792.48999,799.400024,789.409973,793.219971,1243600,793.219971\n2016-08-25,792.00,794.719971,787.22998,791.299988,1196400,791.299988\n2016-08-24,796.859985,798.460022,790.76001,793.599976,1283600,793.599976\n2016-08-23,800.47998,801.00,795.98999,796.590027,913500,796.590027\n2016-08-22,798.51001,799.299988,794.330017,796.950012,852800,796.950012\n2016-08-19,799.789978,801.22998,796.880005,799.650024,1094400,799.650024\n2016-08-18,805.359985,808.00,801.630005,802.75,864600,802.75\n2016-08-17,800.00,805.630005,796.299988,805.419983,1064500,805.419983\n2016-08-16,803.50,804.26001,797.00,801.190002,1056700,801.190002\n2016-08-15,807.210022,811.359985,804.030029,805.960022,929800,805.960022\n2016-08-12,805.090027,807.190002,803.640015,807.049988,897300,807.049988\n2016-08-11,810.469971,813.880005,806.00,808.200012,1282300,808.200012\n2016-08-10,807.049988,810.880005,806.48999,808.48999,918500,808.48999\n2016-08-09,804.48999,813.330017,804.059998,807.47998,1607700,807.47998\n2016-08-08,806.00,807.599976,801.690002,805.22998,1221300,805.22998\n'


그 다음 이걸 문자열로 디코딩해서 행별로 리스트로 잘라서 csv 파일을 쓰는 식으로 하려는데..


decode()를 이용하니 이딴 식으로 나옴

>>> response.read().decode('UTF-8')
''


인코딩을 뭐로 줘도 안되서 헤메대가 바이트 코드를 다시 출력해봤는데 이따우로 나옴

>>> response.read()
b''


이건 그냥 아무 내용도 없이 바이트코드라는 형식만 덜렁 있는 거잖아?

첫번째로 read()를 실행했을 때는 잘 나오더니 왜 두번째로 실행했을 때는 이렇게 되지??

read()로 한 번 읽고 나면 그냥 사라지는 거임???


어차피 실제 쓸 때는 이런 식으로 화면으로 확인 안하고 바로 다른 변수에 집어넣어서 처리하니까 큰 문제는 없는데

왜 이런 일이 일어나는지 이해가 안가서 질문해 봄