1. 데이터 다운로드


파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문

파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문 책과 강의를 바탕으로한 코드 리뷰 및 정리입니다. 자세한 내용은 책과 강의를 참고해주세요.


1. 크롤링과 스크레이핑

1-1. 데이터 다운로드

  • urllib 라이브러리 사용 - url을 다루는 모듈을 모아놓은 패키지

    • urllib.request : 웹 사이트에 있는 데이터에 접근하는 기능


- urlretrieve(url, savename) : 파일 직접 다운로드

   ex)  웹 상의 png파일 저장

  ```python
  import urllib.request
  
  #URL과 저장경로 저장하기
  url="http://uta.pw/shodou/img/28/214.png"
  savename="test.png"
  
  #다운로드
  urllib.request.urlretrieve(url,savename)
  print("저장되었습니다")
  ```


- urlopen() :

  ex) 웹 상의 png 파일 저장

  ```python
  import urllib.request
  
  #URL과 저장경로 저장하기
  url="http://uta.pw/shodou/img/28/214.png"
  savename="test1.png"
  
  #다운로드
  mem=urllib.request.urlopen(url).read()
  
  #파일로 저장하기
  with open(savename, mode="wb") as f:
      f.write(mem)
      print("저장되었습니다")
  ```

​ ​
​ - 클라이언트 접속 정보 출력 - IP확인 ​
​ - decode(‘utf-8’) or (‘euc-kr’) : 바이너리 데이터를 문자열로 변환 ​
​ ex) IP확인 API로 접근해서 결과 추출 ​
```python import urllib.request

    #데이터 읽어오기
    url="http://api.aoikujira.com/ip/ini"
    res=urllib.request.urlopen(url)
    data=res.read()
    
    #바이너리를 문자열로 변환하기
    text=data.decode('utf-8') #text를 열면 알 수 없는 문자들임
    print(text)
    ```

- 매개변수를 추가해 요청을 전송하는 방법

  - 웹 요청의 기본 

    https://search.naver.com/search.naver?where=nexearch&query=%ED%99%A9%ED%9D%AC%EC%B0%AC+%EA%B3%A8&sm=top_lve&ie=utf8 라는 주소가 있을 때

    - 방식 : GET (urllib.request 쓸 때는 주로 get방식)
    - 대상 : search.naver.com = 호스트이름
    - 추가적인 정보 
      - 경로 : /search.naver
      - 데이터 :?키=값&키=값&... 로 쭉 이어져 있음 
        :?where=nexearch
        &query=%ED%99%A9%ED%9D%AC%EC%B0%AC+%EA%B3%A8 (decoding ->황희찬 + 골)
        &sm=top_lve
        &ie=utf8

```python 
import urllib.request
import urllib.parse

API="https://search.naver.com/search.naver"

#매개변수를 URL 인코딩
values={
    "where":"nexearch",
    "sm":"top-hty",
    "fbm":"1",
    "ie":"utf8",
    "query":"초콜릿",
}
    
params=urllib.parse.urlencode(values)

#요청전용 URL 생성
url=API+"?"+params
print("url=",url)

#다운로드
data=urllib.request.urlopen(url).read()
text=data.decode('utf-8')
print(text)
```


- 매개변수를 명령줄에서 지정하기

  ```python
  import sys
  import urllib.request as req
  import urllib.parse as parse
  
  #명령줄 매개변수 추출
  if len(sys.argv)<=1:
      print("USAGE: download-forecast-argv <Region Number>")
      sys.exit()
  regionNumber=sys.argv[1]
  
  #매개변수를 URL 인코딩
  API="http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp"
  values={
      'stnId':regionNumber
  }
  params=parse.urlencode(values)
  url=API+"?"+params
  print("url=",url)
  
  #다운로드
  data=req.urlopen(url).read()
  text=data.decode('utf-8')
  print(text)
  ```






© 2018. by yeo0

Powered by yeo0