質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2929閲覧

Python:Twitterで特定のワードを含むツイートを収集するコードの中身についての質問

momodebi

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2020/01/26 04:35

編集2020/01/26 04:56

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初心者のため、質問内容が分かりづらく、大変申し訳ありませんが、
分かる範囲でご回答いただけますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2020/01/26 04:43

インデントがなくなってしまって読みづらいのでソースコードはコードブロックで囲んで提示ください。 コードの場所を示したいのであれば「#質問1の部分~」のようにPythonコメント文で示せばよいです。 また、「コードの解説」とありますが、参考にした(=コピペ元の)書籍、Webページがあるのであれば、明示ください。
guest

回答1

0

ベストアンサー

質問内容1. 質問内容4.

数学でx = 1は方程式ですが、プログラミングでは方程式ではありません。
これは代入と呼ばれ、xという箱に1という値を入れる、というような意味に近いです。

なので、Pythonは再代入が可能なプログラミング言語なので、x = 1とした後に、x = 2として中身を入れ替えることができます。

つまり、max_id=noneというコードがあるからといって、常にmax_id=noneとは限らないのです。

質問内容2.

例えば、countを10としたら1回の検索で10個特定のワードを含むものがヒットすると考えていました

それでいいかと思いますが、該当するツイートが10件なければ、それ以下の件数になるということかと思います。
https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets

質問内容3.

continue 文も C 言語から借りてきたもので、ループの次のイテレーションを実行します:

4.4. break 文と continue 文とループの else 節 | 4. その他の制御フローツール — Python 3.8.1 ドキュメント

つまり、その回のループをそこで終了して次の回に行く、ということです。意味合いとしては、その回をスキップする、に近いです。

投稿2020/01/27 06:49

Lhankor_Mhy

総合スコア36074

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momodebi

2020/01/27 12:54

>Lhankor_Mhy様  回答頂き、誠に有難うございます。理解することが出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問