2019년 1월 16일 수요일

Capstone Design :: twitterscraper python활용

이번 게시물에서는 python-twitter의 7일이 지난 트윗을 수집할 수 없는 문제점을 해결하기

위해 twitterscraper를 사용하였습니다.

Github(https://github.com/taspinar/twitterscraper)에서 상세 정보를 볼 수 있습니다.

twitterscraper는 트위터에서 제공하는 토큰을 이용하지 않는 API여서 7일의 제한이 걸리지

않습니다.

twitter api 설치했던 것과 동일한 방법으로 twitterscraper를 설치해 줍니다.

설치됐다면

from twitterscraper import query_tweets

import 시켜줍니다.

import twitterscraper로 해도 될 거 같은데 그렇게는 import가 되지 않더군요.

twitterscraper의 검색 함수는 query_tweets()입니다.

매개변수(parameter)로는 query, limit, begindate, enddate, poolsize, lang이 있습니다.

리턴값은 fullname, id, likes, replies, retweets, text, timestamp, user 입니다.

query_tweets()함수를 이용하여 트윗을 수집해 보겠습니다.

list_of_tweets = query_tweets('디아블로', begindate=datetime.date(2018,1,1), enddate=datetime.date(2019,1,15), poolsize=150, lang='ko')
for tweet in list_of_tweets:
    print(tweet.fullname, tweet.timestamp, tweet.text)
    print("\n")

2018년1월1일부터 2019년1월15일까지 "diablo"가 들어간 트윗을 출력하는 것을

볼 수 있습니다.

///////////////////////////////////////////////////////////////////////////////////////////////////////

파란여우 2017.09.04일 입대 2018-12-16 07:02:43 로스트아크 2시간 해본 결과
디아블로 상위호환으로 판명
1417
sjrnf1357

미르 2018-12-16 06:48:41 디아블로 탈모임같은 것만 아니었도 상황이 더 좋았을까요?ㅠㅠ
1418
Ahrinicle

wabi4B 2018-12-16 06:28:17 35mm vs 50mm 표준렌즈 대결구도는 디아블로 천상과 지옥의 영원한 전쟁을 보는 것 같다. 결론이 안나.
1419
ORe8yB9YwYkmMxs

전다선 2018-12-16 05:52:31 역시 디아블로 에미야 영혼석이 짜다가;;;
1420
moriyasu_jeon

영강은 2018-12-16 05:44:48 블리자드 “‘디아블로3’ 최대 경쟁 상대 ‘블·소’”
1421
kmsxipjc167

:Al에드루프lA: 2018-12-16 05:35:42 배틀라이트 로얄..어느 일정한 거리에 몬스터가 있으면 배틀로얄 방식속에 뭔가 디아블로 같은 느낌 낫겠당...ㅋ
1422
llYHTll

Monkey Monk 2018-12-16 05:16:18 안녕하세요. 디아블로3에 나오는 영어를 올리는 봇입니다. 수도승 버전입니다.
1423
d3_monk_words

///////////////////////////////////////////////////////////////////////////////////////////////////////

저는 몇 개의 트윗을 수집했나 확인하기 위해서 숫자를 붙였습니다

그런데 보다 보면 이상한 점이 있습니다. tweet.text에 디아블로라는 단어가 포함되지

않았음에도 수집해오는 것입니다. 이로 본문 내용에 검색 단어가 포함돼 있지 않아도

답글하는 아이디, 멘션, 계정 아이디에도 영향을 받는것을 알 수 있습니다.

python-twitter역시 위와 동일합니다.

list_of_tweets = query_tweets('디아블로', begindate=datetime.date(2018,1,1), enddate=datetime.date(2019,1,15), poolsize=150, lang='ko')
a=1for tweet in list_of_tweets:
    if "디아블로" in tweet.text:
        print(str(a) + "\n")
        print(tweet.fullname, tweet.user, tweet.timestamp, tweet.text)
        print("\n")
        a=a+1

위 내용에서 tweet.text에서 디아블로라는 단어를 찾아주는 조건문을 넣었습니다.

약 1년 치의 트윗을 확인해본 결과 본문에 디아블로라는 단어가 모두 포함됐습니다.

디아블로를 검색했을 때는 가계정이나 광고성 글이 보이지 않았지만 다음 포스팅에서는

필터링하는 코드도 추가하도록 하겠습니다.

댓글 없음:

댓글 쓰기