Webサイト(https://note.com/virtual_surfer/n/n9d27c8db18f8)での情報を基に、
PythonでTwitterから特定のワードを含むツイートを収集するコードを書きました。
しかし、コードの中身をコピペしてしまっている部分があり、色々と調べてみたのですが、
理解できない部分があったため、質問をさせていただきました。
#Twitterで特定のワードを含むツイートを収集するコード import tweepy CK="*******" CS="*******" AT="*******" AS="*******" auth = tweepy.OAuthHandler(CK,CS) auth.set_access_token(AT,AS) api = tweepy.API(auth) search_word='yahoo' search_count=3 def collect_tweets(search_word, search_count): max_id=None collected_tweets=[] collected_texts=[] lower_search_name=search_word.lower() for i in range(0,search_count): print('#########################') print('「{}」での{}回目のツイート検索開始'.format(search_word,i+1)) #質問1の部分 if max_id is None: #質問2の部分 search_results=api.search(q=search_word,count=10,lang='ja',result_type='mixed') else: search_results=api.search(q=search_word,count=10,lang='ja',max_id=max_id,result_type='mixed') for status in search_results: user_info = status.user name = user_info.name screen_name = user_info.screen_name description = user_info.description image_url = user_info.profile_image_url_https follow_count = user_info.friends_count follower_count = user_info.followers_count text = status.text pre_text = text[:30] lower_screen_name = user_info.screen_name.lower() lower_name = user_info.name.lower() #質問3の部分 if 'RT @' in text or pre_text in [text[:30] for text in collected_texts] or (lower_search_name in lower_screen_name or lower_search_name in lower_name): continue print('------------------------------------------') print('【名前】{}\n【アカウント名】{}\n【自己紹介】{}\n【画像URL】{}\n【フォロー数】:{}\n【フォロワー数】:{}\n【ツイート】:{}' .format(name, screen_name, description, image_url, follow_count, follower_count, text)) collected_texts.append(text) collected_tweets.append(status) #質問4の部分 if len(search_results) > 1: max_id = search_results[-1].id else: break collect_tweets(search_word, search_count)
質問箇所に関するコードは、太字斜体としています。
質問内容1. if max_id is None のコードの意味
→コードの解説には、2度目以降の検索では一つ前の検索以降のつぶやきを検索していくために書くと書いてありますが、コード上ではmax_id=noneと指定しているのも相まって、良くコードの意味が理解できておりません。
質問内容2. api.searchにおけるcountの意味
→例えば、countを10としたら1回の検索で10個特定のワードを含むものがヒットすると考えていましたが、例えばyahooで検索したら1回目 4個 2回目 4個 3回目 2個となりました。
質問内容3.
if 'RT @' in text or pre_text in [text[:30] for text in collected_texts] or (lower_search_name in lower_screen_name or lower_search_name in lower_name):
continueのコードの意味
→コードの解説には、不要なtweet(・引用文章なしのリツイート等)を弾くために書いているとありましたが、Pythonから初心者からするとコード上にはcontinueと書いてあるので、不要なtweetがあっても動作を続けますと読み取れてしまいます...
質問内容4.if len(search_results) > 1:
max_id = search_results[-1].id
else:
breakのコードの意味
→コードの解説には、一番古いツイートよりも古いツイートを探すため、一番古いツイートID取得。検索結果が0件の場合は検索処理のループ終了とありますが、既にその前にmax_id=Noneとしているので、このコードを書く意味がいまいち分からない状況です...
Python初心者のため、質問内容が分かりづらく、大変申し訳ありませんが、
分かる範囲でご回答いただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー