python으로 데이터 수집하기 - 1) pycharm 설치 및 관련 패키지 설치하기




python으로 데이터 수집하기



pycharm 설치 및 패키지 설치하기 



request, beautifulSoup4를 사용해서 웹페이지 크롤링을 해보려고 합니다. 

pyCharm을 쓰고 있으면  IDE에서 간단하게 해당 패키지들을 설치할 수 있습니다.  

먼저 pyCharm 프로그램을 실행하고 File-Settings을 클릭합니다. 








Settings - Project에서 에서 Project Interpreter를 클릭하면

오른편에 +, - , ▲ 아이콘이 있습니다. 


+ : 패키지 추가

- : 패키지 삭제

▲ : 패키지 업데이트



+ 버튼을 눌러서 데이터 수집할때 사용할

 beautifulsoup4, request 패키지를 설치해봅니다. 


패키지 이름으로 검색하고 찾으면 클릭해서 Install Package 버튼을 누르면 끝입니다. 




request 패키지도 추가합니다. 



그럼 다음 포스팅에서는 실제로 웹페이지를 수집하는 

스크립트를 작성해보겠습니다. 



참고: 


https://engkimbs.tistory.com/611


https://engkimbs.tistory.com/613?category=762758


https://beomi.github.io/2017/02/27/HowToMakeWebCrawler-With-Selenium/








flask get_json 함수 사용법




flask get_json 함수 사용법 




flask 에서 기본적으로 제공하는 get_json 함수를 사용해서 

post 방식으로 보내는 json 데이터 처리법을 정리해 보겠습니다. 



일단 flask에서 post 방식으로 오는 json 입력을 받는 함수를 작성해보겠습니다. 

flask의 app.route에 methods 에 post를 명기해두면 

post 방식으로 오는 입력만 받을 수 있습니다. 





@app.route('/test', methods=['POST'])

def test():

    try:

       req_data = request.get_json()

       logger.debug("req_data :" + json.dumps(req_data ))





curl 을 사용한 flask 호출방법은 아래와 같습니다. 

-H 옵션으로 json 형식을 명시해줍니다. 

https 인증서와 관계없이 간단히 테스트하기 위해 -k 옵션을 사용했습니다. 





# curl -k -X POST "https://도메인:포트/test" -H 'Content-Type: application/json' -d'

{

  "local" : { "table": "exp", "fields" :  [ "construction_amount", "cd", "spirit", "exchange", "stock_price" ] 

}

'






이렇게 받은 데이터를 get_json으로 받고 사용 예시는 아래와 같습니다. 


일반적으로 json의 nested 구조에 접근할 경우 []를 사용합니다. 


예시 :  req_data['local'], req_data['local']['table']


배열일 경우 req_data['local']['fields'][0]  

참고로 마지막 0은 배열의 인덱스입니다. 




입력받은 json에서 사용하지 않는 키를 flask 에서 참조할 경우 에러가 나는데 

키 값으로 접근하기 전에 키가 존재하는지 확인할 필요가 있습니다. 


그럴경우 아래와 같이 in 이나 not in을 사용해서 체크합니다. 



if 'local' in req_data and 'custom' not in req_data:

          sql = "Select {0}, {1} From experiment_sido order by date".format(req_data['local']['field']), req_data['local']

      else:






참고 : https://scotch.io/bar-talk/processing-incoming-request-data-in-flask


리눅스에서 python 32bit 인지 64bit인지 확인하기



sklearn으로 신경망 훈련하다가 MemoryError 발생 ㅠㅠ


검색해보니 32bit python을 사용하면

 메모리를 최대 2기가밖에 사용을 못한다고 한다. 


그래서 32bit 인지 64bit인지 아래와 같이 확인해보았으나 

64bit가 잘 설치되어 있다 ㅋㅋㅋㅋㅋㅋㅋㅋ


다른 부분이 원인인가 보다 

일단 기록해두기 위해 포스팅 해둔다 ㅠㅠ



file -L $(python -c 'import sys; print(sys.executable)')


/usr/bin/python: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=2cf5aa8226693db55bc32e020514ebe65498e276, stripped