Python+seleniumを使ってtwitterにログインし、特定ユーザのツイートを抜き出す方法
Pythonを利用してtwitterにログインし、特定ユーザのツイートを抜き出すプログラムを書こうとしています。(下記のプログラムではツイートIDの抜き出しまで)
しかし、下記のプログラムを動かしてもツイートIDがcsvファイルに吐き出されません。
空のcsvファイルができます。
「ログインボタン要素の取得」と「ログインボタンを押下」のコマンド部分をコメントアウトするとなぜかcsvファイルの中にツイートIDが入るようになるのですが、なぜこのような動作になるのか理解できず困っています。
原因に心当たりの方がおられましたら、アドバイスいただけると助かります。
※最終的にtwitterの鍵垢の人のツイートを保存したいので、twitterへのログインは必須だと考えています。
動作環境
Windows10
Python 3.7.4
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
from time import sleep
driver=webdriver.Chrome("./driver/chromedriver.exe")
# 各種設定
# twitterアカウント
user_id = '[email protected]'
password = 'xxxxxxxxxx'
# ログインページを開く
driver.get('https://twitter.com/login/')
time.sleep(3) # 動作止める
#ユーザーid入力フォーム要素の取得
user_box = driver.find_element_by_class_name('js-username-field')
#取得した要素へidを入力
user_box.send_keys(user_id)
sleep(1)
#パスワード入力フォーム要素の取得
password_box = driver.find_element_by_class_name('js-password-field')
#取得した要素へキー入力
password_box.send_keys(password)
sleep(1)
#ログインボタン要素の取得
login_btn = driver.find_element_by_css_selector('button.submit.EdgeButton.EdgeButton--primary.EdgeButtom--medium')
#ログインボタンを押下
login_btn.click()
sleep(1)
driver.get('https://twitter.com/TwitterJP')
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))
#ファイルに書き込み
f = open ('test_id.txt','a',encoding='utf-8')
for tweet in new_list:
f.write(tweet+'\n')
f.close()
Author And Source
この問題について(Python+seleniumを使ってtwitterにログインし、特定ユーザのツイートを抜き出す方法), 我々は、より多くの情報をここで見つけました https://qiita.com/kazuki1013/items/d6ad9905fd88c781bdf7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .