본문 바로가기

2019년 혁신성장 청년인재 집중양성(빅데이터)/PYTHON 공부 - PY4E

PY4E - Chapter 13 Twitter API (트위터 API를 이용한 크롤링)

코드는 https://www.py4e.com/materials

 

PY4E - Python for Everybody

Free/Open Course Materials You are welcome to use/reuse/remix/retain the materials from this site in your own courses. Nearly all the material in this web site is Copyright Creative Commons Attribution. These are links to downloadable content as well as li

www.py4e.com

Sample Code ZIP을 다운 받으면 된다.

 

1. 준비

 

1-1. 먼저 트위터 계정이 있어야 한다. 나는 계정이 있었지만, 정지되어 있어서, 고객센터에 메일을 보내 정지를 풀었다.

 

 

1-2. https://developer.twitter.com/en/apps, 에서 Developer를 신청해야 한다. 

 

 

https://developer.twitter.com/en/apps

 

developer.twitter.com

1-3. 리뷰가 완료되고, 허가가 되면 앱을 만들 수 있다. 아래와 같은 곳에 값을 채워준다.

 

 

1-4. 앱이 생성되면, 디테일에서 자세한 정보를 확인할 수 있다.

 

1-5. Key and Tokens를 누르면 Oauth 인증에 필요한 비밀번호를 확인할 수 있다. 노출해서는 안 된다!

 

2. 점검 해보기

 

2-1. 먼저 hidden.py에서 oauth()를 정의 할 수가 있는데, 그곳에다가 우리가 앱에서 확인한 키 값을 바꿔 주어야 한다.

 

 

2-2. twrul.py는 hidden.py의 정의된 oauth를 불러와서 인증을 하는데 이용이 된다. 여기서 키 값을 이용하여 어떤 과정을 거치면 더러운 url하나가 형성이 되는데, 이게 전자서명 역할을 하게 된다.

 

 

2-3. 이러한 준비를 마치면, twtest.py에서 test를 할 수 가 있다. 

 

이미 정의된 argument 함수에 url과 parameter를 집어 넣으면

이미 변경되어 있는 나의 앱의 키를 이용하여 인증을 하고 전자서명을 가지고 트위터와 연결한다.

 

argument 함수에서 트위터에 연결을 한 후, 우리가 필요한 파라미터, 여기서는 screen_name과 count를 지정하여 준다.

 

그러면 api가 제공하는 url 값을 얻을 수 있다.

 

2-4. SSL 인증은 일단 무시하며

 

2-5. url을 urllib으로 받아 data로 읽어 들인다. 보면 더럽다. json 형식인데, 여기서는 작동이 되는지 확인만 한 것이니 일단 넘어간다.

x-rate-limit-remaining은 확인할 필요가 있다. 남은 크롤링 횟수를 의미한다. 즉, 명령을 몇 번 내릴 수 있냐는 뜻이다.

 

 

 

3. 이제 원하는 데이터를 크롤링 하기 위해, twitter1.py를 이용할 것이다.

 

이번엔 간단하게 acct(계정)을 직접 검색할 수 있도록 input을 넣어서 바꿔 주었다.

 

 

내 계정을 검색해보니 정보가 없었다. 뭐, 활동을 안하니.

 

혜민스님 아이디로 검색해보니 무엇인가 떴다.

 

4. 이번엔 twitter2.py 를 통해 친구 리스트를 가져와 본다.

 

twitter1.py과 달라진 것은 아주 사소한 부분이다.

아이디를 입력하여 똑같이 url을 받아온 뒤, 그 url의 json데이터를 받아 읽어들인 후

반복문을 통해, js[json]에 있는 태그들을 읽어들인다.

여기서는 친구 목록의 json파일에 대해 각각의 친구의 [status]안의 ['text']에 대해서 가져온다.

상태 설명.

 

결과 나온 것은 좋은데, 왜 나 remaining이 14냐? 한번 검색했는데.

 

일단은 여기까지.