Python에서 Twitter analytics 데이터 내보내기 (트윗에 대한 자세한 정보 [노출, 참여, 좋아, 리트윗 등] 보고서) 자동 획득
1. 본 기사란?
Python을 사용하여 Twitter 애널리틱스의 데이터 내보내기를 자동화했습니다.
· Twitter 애널리틱스 데이터 내보내기
- 자세한 트윗 정보를 얻을 수 있다.
- 취득할 수 있는 것은 자신의 트윗만
- 인증 필요 없음
・트위터 api
- 어떤 트윗도 획득 가능
- 자세한 정보를 얻을 수 없음
- 인증 필요
- 자동으로 트윗하는 기능이 있다
- 취득할 수 있는 정보는 트윗 본문, 좋아요, 리트윗 수 등
아래 두 기사의 조합에 약간의 추가를 추가한 것입니다.
・ruby판(참고로 했습니다.)
Mechanize에서 Twitter 애널리틱스 데이터 내보내기 자동화
· 파이썬으로 트위터에 로그인
Python Selenium에서 트위터 로그인에서 게시 할 bot
2 코드
python.pyimport time
from selenium import webdriver
# 各種設定
# twitterアカウント
account = '[email protected]' #メールアドレスを推奨(user_id or メールアドレス)
password = '〜password〜'
# Twitterログイン実行する処理
# ログインページを開く
URL="https://analytics.twitter.com/user/[user_id]/tweets"#[user_id]には、自分のユーザーID
driver = webdriver.Chrome("〜chromedriverのPATH〜")
driver.get(URL)
time.sleep(3) # 動作止める
# accountを入力する
element_account = driver.find_element_by_class_name("js-username-field")
element_account.send_keys(account)
time.sleep(3) # 動作止める
# パスワードを入力する
element_pass = driver.find_element_by_class_name("js-password-field")
element_pass.send_keys(password)
time.sleep(3) # 動作止める
# ログインボタンをクリックする
element_login = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
element_login.click()
time.sleep(3) # 動作止め
#7日version
driver.find_element_by_class_name('daterange-selected').click()
time.sleep(3)
element_login=driver.find_element_by_xpath("/html/body/div[4]/div[4]/ul/li[1]")
element_login.click()
time.sleep(3)
element_login=driver.find_element_by_xpath("//*[@id='export']/button")
element_login.click()
time.sleep(5)
#28日version
#driver.find_element_by_xpath("//*[@id='export']/button")
#time.sleep(3)
3 보충
first.pydriver.find_element_by_class_name('daterange-selected').click()
second.pyelement_login=driver.find_element_by_xpath("/html/body/div[4]/div[4]/ul/li[1]")
third.pydriver.find_element_by_xpath("//*[@id='export']/button")
xpath를 사용할 때의 참고
【슈퍼 편리】Python과 Selenium에서 브라우저를 자동 조작하는 방법 정리
4. AWS에서 실행하려고 할 때 빠진 점을 소개
위 코드를 실행할 때 오류
1.selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".daterange-selected"}
(Session info: headless chrome=76.0.3809.100)
=> account = '[email protected]' #メールアドレスを推奨(user_id or メールアドレス)
곳을 user_id로 실행하고 있었는데, 로그인할 수 없는 경우가 있어 메일 주소로 실행해 해결.
이때의 디버그로 참고로 한 기사
Selenium에서 화면 전환 후 화면에서 요소를 얻을 수없는 문제 해결print(driver.current_url)
를 넣는다.
2.selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.34.522913 (36222509aa6e819815938cbf2709b4849735537c),platform=Linux 4.9.20-10.30.amzn1.x86_64 x86_64)
그리고Message: unknown error: call function result missing 'value'
=> aws에 다운로드 한 chrome과 choromdrive의 버전이 다른 경우 발생합니다.
Amazon Linux에서 Selenium 환경을 최단으로 구축
Amazon Linux에서 Python + Selenium + Headless Chrome을 사용하여 웹 스크래핑
를 참고로 버전을 맞추면,
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument("start-maximized")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("disable-infobars")
options.add_argument('--disable-extensions')
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
같은 옵션을 지정하여 해결.
AWS Lambda(Python3)에서 Selenium + Chrome Headless +로 웹 스크래핑
chromedriver 설치 노트
참고로 해결.
3.
2에서 다음 코드를 사용하면 CSV 데이터를 다운로드 할 수없는 문제가 발생합니다.
options.add_argument('--headless')
[해결책]
def enable_download_in_headless_chrome(browser, download_dir):
#add missing support for chrome "send_command" to selenium webdriver
browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
browser.execute("send_command", params)
enable_download_in_headless_chrome(driver, "〜保存したいフォルダ名〜")
[Selenium] 헤드리스 모드에서 CSV 파일을 다운로드하고 싶을 때의 조치
위 기사에서 소개된 기사
에 작성된 코드를 삽입하여 해결.
플러스로 보충
crontab에서 자동으로 코드를 실행합니다.
#crontabで編集可能になる。
#crontab -rはcrontabの内容が消えてしまうので注意する。
$ crontab -e
* * * * * * bash -l -c "python ~/python.py"
#一つ目の*は「分」
#二つ目の*は「時」を表す。
#この二つで、毎日~時~分に実行できるようになるため十分だと思います。
#丁寧に説明すると、上のコードを書いた後、
[esc]を押して、
次は : を押して、
最後に wq を入力して
[enter] で保存完了。
5. 정리
여러가지는 버렸습니다만, selenum의 공부를 충분히 할 수 있었습니다.
이 후의 분석은
【Python에 의한 데이터 분석①】Python으로 트위터의 오리지널 데이터로부터 확산되기 쉬운 트윗을 분석해 보자!
등으로 공부하고 분석해 보는 것도 좋네요.
Reference
이 문제에 관하여(Python에서 Twitter analytics 데이터 내보내기 (트윗에 대한 자세한 정보 [노출, 참여, 좋아, 리트윗 등] 보고서) 자동 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/cheshi/items/3571ad61be58a2a95a6c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
python.py
import time
from selenium import webdriver
# 各種設定
# twitterアカウント
account = '[email protected]' #メールアドレスを推奨(user_id or メールアドレス)
password = '〜password〜'
# Twitterログイン実行する処理
# ログインページを開く
URL="https://analytics.twitter.com/user/[user_id]/tweets"#[user_id]には、自分のユーザーID
driver = webdriver.Chrome("〜chromedriverのPATH〜")
driver.get(URL)
time.sleep(3) # 動作止める
# accountを入力する
element_account = driver.find_element_by_class_name("js-username-field")
element_account.send_keys(account)
time.sleep(3) # 動作止める
# パスワードを入力する
element_pass = driver.find_element_by_class_name("js-password-field")
element_pass.send_keys(password)
time.sleep(3) # 動作止める
# ログインボタンをクリックする
element_login = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
element_login.click()
time.sleep(3) # 動作止め
#7日version
driver.find_element_by_class_name('daterange-selected').click()
time.sleep(3)
element_login=driver.find_element_by_xpath("/html/body/div[4]/div[4]/ul/li[1]")
element_login.click()
time.sleep(3)
element_login=driver.find_element_by_xpath("//*[@id='export']/button")
element_login.click()
time.sleep(5)
#28日version
#driver.find_element_by_xpath("//*[@id='export']/button")
#time.sleep(3)
3 보충
first.pydriver.find_element_by_class_name('daterange-selected').click()
second.pyelement_login=driver.find_element_by_xpath("/html/body/div[4]/div[4]/ul/li[1]")
third.pydriver.find_element_by_xpath("//*[@id='export']/button")
xpath를 사용할 때의 참고
【슈퍼 편리】Python과 Selenium에서 브라우저를 자동 조작하는 방법 정리
4. AWS에서 실행하려고 할 때 빠진 점을 소개
위 코드를 실행할 때 오류
1.selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".daterange-selected"}
(Session info: headless chrome=76.0.3809.100)
=> account = '[email protected]' #メールアドレスを推奨(user_id or メールアドレス)
곳을 user_id로 실행하고 있었는데, 로그인할 수 없는 경우가 있어 메일 주소로 실행해 해결.
이때의 디버그로 참고로 한 기사
Selenium에서 화면 전환 후 화면에서 요소를 얻을 수없는 문제 해결print(driver.current_url)
를 넣는다.
2.selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.34.522913 (36222509aa6e819815938cbf2709b4849735537c),platform=Linux 4.9.20-10.30.amzn1.x86_64 x86_64)
그리고Message: unknown error: call function result missing 'value'
=> aws에 다운로드 한 chrome과 choromdrive의 버전이 다른 경우 발생합니다.
Amazon Linux에서 Selenium 환경을 최단으로 구축
Amazon Linux에서 Python + Selenium + Headless Chrome을 사용하여 웹 스크래핑
를 참고로 버전을 맞추면,
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument("start-maximized")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("disable-infobars")
options.add_argument('--disable-extensions')
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
같은 옵션을 지정하여 해결.
AWS Lambda(Python3)에서 Selenium + Chrome Headless +로 웹 스크래핑
chromedriver 설치 노트
참고로 해결.
3.
2에서 다음 코드를 사용하면 CSV 데이터를 다운로드 할 수없는 문제가 발생합니다.
options.add_argument('--headless')
[해결책]
def enable_download_in_headless_chrome(browser, download_dir):
#add missing support for chrome "send_command" to selenium webdriver
browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
browser.execute("send_command", params)
enable_download_in_headless_chrome(driver, "〜保存したいフォルダ名〜")
[Selenium] 헤드리스 모드에서 CSV 파일을 다운로드하고 싶을 때의 조치
위 기사에서 소개된 기사
에 작성된 코드를 삽입하여 해결.
플러스로 보충
crontab에서 자동으로 코드를 실행합니다.
#crontabで編集可能になる。
#crontab -rはcrontabの内容が消えてしまうので注意する。
$ crontab -e
* * * * * * bash -l -c "python ~/python.py"
#一つ目の*は「分」
#二つ目の*は「時」を表す。
#この二つで、毎日~時~分に実行できるようになるため十分だと思います。
#丁寧に説明すると、上のコードを書いた後、
[esc]を押して、
次は : を押して、
最後に wq を入力して
[enter] で保存完了。
5. 정리
여러가지는 버렸습니다만, selenum의 공부를 충분히 할 수 있었습니다.
이 후의 분석은
【Python에 의한 데이터 분석①】Python으로 트위터의 오리지널 데이터로부터 확산되기 쉬운 트윗을 분석해 보자!
등으로 공부하고 분석해 보는 것도 좋네요.
Reference
이 문제에 관하여(Python에서 Twitter analytics 데이터 내보내기 (트윗에 대한 자세한 정보 [노출, 참여, 좋아, 리트윗 등] 보고서) 자동 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/cheshi/items/3571ad61be58a2a95a6c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
driver.find_element_by_class_name('daterange-selected').click()
element_login=driver.find_element_by_xpath("/html/body/div[4]/div[4]/ul/li[1]")
driver.find_element_by_xpath("//*[@id='export']/button")
위 코드를 실행할 때 오류
1.
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".daterange-selected"}
(Session info: headless chrome=76.0.3809.100)
=> account = '[email protected]' #メールアドレスを推奨(user_id or メールアドレス)
곳을 user_id로 실행하고 있었는데, 로그인할 수 없는 경우가 있어 메일 주소로 실행해 해결.이때의 디버그로 참고로 한 기사
Selenium에서 화면 전환 후 화면에서 요소를 얻을 수없는 문제 해결
print(driver.current_url)
를 넣는다.2.
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.34.522913 (36222509aa6e819815938cbf2709b4849735537c),platform=Linux 4.9.20-10.30.amzn1.x86_64 x86_64)
그리고Message: unknown error: call function result missing 'value'
=> aws에 다운로드 한 chrome과 choromdrive의 버전이 다른 경우 발생합니다.Amazon Linux에서 Selenium 환경을 최단으로 구축
Amazon Linux에서 Python + Selenium + Headless Chrome을 사용하여 웹 스크래핑
를 참고로 버전을 맞추면,
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument("start-maximized")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("disable-infobars")
options.add_argument('--disable-extensions')
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
같은 옵션을 지정하여 해결.
AWS Lambda(Python3)에서 Selenium + Chrome Headless +로 웹 스크래핑
chromedriver 설치 노트
참고로 해결.
3.
2에서 다음 코드를 사용하면 CSV 데이터를 다운로드 할 수없는 문제가 발생합니다.
options.add_argument('--headless')
[해결책]
def enable_download_in_headless_chrome(browser, download_dir):
#add missing support for chrome "send_command" to selenium webdriver
browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
browser.execute("send_command", params)
enable_download_in_headless_chrome(driver, "〜保存したいフォルダ名〜")
[Selenium] 헤드리스 모드에서 CSV 파일을 다운로드하고 싶을 때의 조치
위 기사에서 소개된 기사
에 작성된 코드를 삽입하여 해결.
플러스로 보충
crontab에서 자동으로 코드를 실행합니다.
#crontabで編集可能になる。
#crontab -rはcrontabの内容が消えてしまうので注意する。
$ crontab -e
* * * * * * bash -l -c "python ~/python.py"
#一つ目の*は「分」
#二つ目の*は「時」を表す。
#この二つで、毎日~時~分に実行できるようになるため十分だと思います。
#丁寧に説明すると、上のコードを書いた後、
[esc]を押して、
次は : を押して、
最後に wq を入力して
[enter] で保存完了。
5. 정리
여러가지는 버렸습니다만, selenum의 공부를 충분히 할 수 있었습니다.
이 후의 분석은
【Python에 의한 데이터 분석①】Python으로 트위터의 오리지널 데이터로부터 확산되기 쉬운 트윗을 분석해 보자!
등으로 공부하고 분석해 보는 것도 좋네요.
Reference
이 문제에 관하여(Python에서 Twitter analytics 데이터 내보내기 (트윗에 대한 자세한 정보 [노출, 참여, 좋아, 리트윗 등] 보고서) 자동 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/cheshi/items/3571ad61be58a2a95a6c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#crontabで編集可能になる。
#crontab -rはcrontabの内容が消えてしまうので注意する。
$ crontab -e
* * * * * * bash -l -c "python ~/python.py"
#一つ目の*は「分」
#二つ目の*は「時」を表す。
#この二つで、毎日~時~分に実行できるようになるため十分だと思います。
#丁寧に説明すると、上のコードを書いた後、
[esc]を押して、
次は : を押して、
最後に wq を入力して
[enter] で保存完了。
여러가지는 버렸습니다만, selenum의 공부를 충분히 할 수 있었습니다.
이 후의 분석은
【Python에 의한 데이터 분석①】Python으로 트위터의 오리지널 데이터로부터 확산되기 쉬운 트윗을 분석해 보자!
등으로 공부하고 분석해 보는 것도 좋네요.
Reference
이 문제에 관하여(Python에서 Twitter analytics 데이터 내보내기 (트윗에 대한 자세한 정보 [노출, 참여, 좋아, 리트윗 등] 보고서) 자동 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cheshi/items/3571ad61be58a2a95a6c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)