python requests, urlib 등으로 api url에서 file을 다운받는 가장 좋은 방법은 뭔가요?

조회수 1238회

api url중에 브라우저 주소 검색창에 url만 입력하고 요청하면 바로 다운로드 폴더에 json파일이 저장 되는 주소가 있습니다. 그런데 python의 requests로 해당 플로우를 구현하려니까.

response = requests.get(url, stream=true)
 content = response.content
with open('/testDir/test.json',  'wb') as file:
    file.write(content)

대충 이런식으로 url에 get으로 요청해서 해당 api의 content를 추출해서 지정한 경로에 컨텐츠를 다시 작성하여 저장하는 방식밖에 검색이 안 되더라구요.

그런데 제가 호출하려는 파일의 양이 100MB 정도 되는 json의 로우 수가 100만개 정도 되는 데이터입니다. 그래서 해당 방법으로는 쉽게 http client connect error가 발생하곤합니다. 혹시 실제로 동작하는 것처럼 요청만해서 바로 원하는 경로에 파일을 저장하도록 하는 방법은 없을까요?

  • 실제 재현을 해볼 수 있도록 파일을 올려보거나 url 을 알려주세요. 서버측 문제인지 클라이언트 문제인지 알수가 없습니다. 정영훈 2020.6.20 00:07
  • api url이 보안 토큰을 사용중이라 알려드릴 수는 없고 질문드린 것처럼 json 파일의 content를 한 번 리딩하여 write하는 구조가 아닌 바로 파일 저장할 수 있는 방법은 없을까요? 김재민 2020.6.21 13:45
  • http 를 공부해보세요. wget 등의 도구도 어차피 http 를 활용하는 이상 바이너리가 아니라면 문자열을 받아내야 합니다. 그리고 테스트를 다양하게 해보세요. 다른 곳에 파일 올려두고 테스트시에도 같은 에러가 발생하는지...등등 그리고 http client error 가 status code 로 몇번인건가요? 누군가에게 도움을 받고 싶다면 그 누군가도 에러를 직접 재현할 수 있는 환경을 만들어서 제공해보세요. 정영훈 2020.6.21 19:13
  • 결론은 없다는 말씀이시네요. 김재민 2020.6.22 06:44
  • http를 이해를 하세요...html 문서나 json 문서나 파일을 받는 것은 같습니다. 문젠 http client connect error 이 에러를 왜 서버에서 발생시키는지 우회하는 방법은 없는가를 찾아야겠죠. http client connect error 이 에러시 http status code 가 뭔가요? 정영훈 2020.6.22 09:07
  • 질문 이해를 잘 못하시네요... 저는 그냥 위에 질문한 것처럼 동작할 수 있는 방법이 있는지 없는지 유무만 물어본거에요. 김재민 2020.6.22 10:30
  • 질문을 이해를 못하는 것이 아니라 님이 답변을 이해를 못하고 있는 겁니다. http 의 매커니즘을 이해를 하면 파일로 받아지는 것도 컨텐츠를 받아서 파일로 저장한다는 것을 알게 됩니다. 그것을 선이해를 해야 해결책을 찾을 수 있는 겁니다. 정영훈 2020.6.22 12:54
  • 네~ 김재민 2020.6.23 16:11

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)