파이썬으로 트위터의 트위터 ID를 폭속으로 집계합시다.
불순한 동기
나는 데이터를 분석하고 가설을 세워 실험해 가는 것을 좋아합니다만, 1차 데이터는 취득하기 어렵다고 생각해요. 눈치챘기 때문에, Twitter를 전략적으로 버즈 시키고 싶다고 생각했습니다.
기술적인problem
API를 가지고 보았습니다만, python으로 사용할 수 있는 Tweepy라고 하는 라이브러리가 엄청 사용하기 어렵고 놀랐습니다. 곤란한 것 아래에 정리했습니다.
-
이것입니다.
이 문제가 너무 수수께끼이므로 해결한 경험이 있는 분은 가르쳐 주시면 감사하겠습니다.
그래서 API 작전은 포기했습니다.
최근에는 Instagram의 API로 놀 수있는 것도 줄어든 것 같고 외롭네요. 아호처럼 스크래핑 먹어서 서버에 부담 걸릴 정도라면 API 공개 해 주었으면 합니다만,,,
남은 수단으로 셀레늄을 사용하기로 결정했습니다.
기술적인 문제 해결
트위터 게시물 URL을 보시면 깨달을 것입니다.
이 twitter.com 뒤가 계정 이름이 되고 status 뒤가 TwitterID가 되어 있으므로 일단 TwitterID만을 취소하고 파일에 저장해 둡니다.
그 후, 각각의 TwitterID로부터 URL을 합성해 requests라든지로 각 투고마다 상세 정보를 취해 데이터 레이크에라도 흩어져 두자는 혼담입니다.
MongoDB에도 돌진해 둡니다.
에서 어떻게 가져 오는지 말하면, 셀레늄과 무한 스크롤로 잡혔습니다.
twitter.py
import selenium
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.Chrome('C:/selenium/chromedriver.exe')
driver.get('http://twitter.com/otnk23')
#無限スクロールの部分
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
soup = driver.page_source
text = BeautifulSoup(soup,'html.parser')
#IDを抜く部分
_id_list = []
for tweet in text.select("div.tweet"):
_id_list.append(tweet['data-tweet-id'])
#リツイートによる重複を無くす
new_list = list(set(_id_list))
#ファイルに書き込み
for tweet in new_list:
with open ('otnk23_id.txt','a',encoding='utf-8') as f:
f.write(tweet+'\n')
f.close()
이런 느낌으로 잡혔습니다.
내 계정의 URL과 합성하기 때문에 아마 리트윗이 제외됩니다. . .
API 경유라면 파라미터로 지정하고 있던 생각이 듭니다.
jupyter상에서 돌았으므로, 무한 스크롤 1회 밖에 쓰고 있지 않습니다만, 본격 운용한다면 while와 time.sleep 걸어 주세요.
무한 스크롤로 참고한 기사
BeautifulSoup의 사촌에서 참고로 한 기사
selenium에서 참고한 기사
나중에 자세한 정보를 취하고 CSV로도 토해 낼 뿐입니다만, 배가 줄었으므로 다음 기사에 씁니다.
다음 기사
h tps:// 퀵했다. 작은 m/도쿄/있어 MS/아 12화 f262268C48
Reference
이 문제에 관하여(파이썬으로 트위터의 트위터 ID를 폭속으로 집계합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Tokyo/items/de206d3e3a6a1997f257텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)