質問: ### Twitterの利用規約 (2019年12月2日時点) Twitterの利用規約の解釈について知りたいです.答えではなく特に**皆さんの意見をお聞きしたいです.**以下,Twitterの利用規約4-(iii)の抜粋 > > Twitterから提供される(かつ該当する利用条件に従う場合にのみ提供される)、当社の現在利用可能な公開インターフェース以外の方法(自動プログラムか否かを問わない)で、本サービスへのアクセスもしくはその探索またはアクセスもしくは探索の試み(ただし、Twitterとの個別契約で特に許可されている場合は除く)(注:本サービスへのクローリングは、robots.txtファイルの定めによる場合は認められていますが、Twitterによる事前の同意がないまま本サービスのスクレイピングをすることは明示的に禁止されています)、 > > > ここにおけるクローリングとスクレイピングについて,下記に示す例は規約違反になるかどうかを知りたいです. 私のクローリングとスクレイピングの理解はこのstackoverflowの記事 の2番目の回答と同じです.また,twitterのrobots.txtにも目を通しています. ### これらは違反になるのか? 可能なら理由を添えて答えていただけると嬉しいです. 1. ウェブブラウザで`https://twitter.com/誰かのアカウント?lang=ja`にアクセスする. 2. ウェブブラウザで`https://twitter.com/誰かのアカウント?lang=ja`にアクセスした後,ページを保存する(Chromeの場合,Ctrl-S). 3. Terminalから手動で`curl https://twitter.com/誰かのアカウント?lang=ja`を実行する. 4. Terminalから手動で`curl https://twitter.com/誰かのアカウント?lang=ja > out.txt`を実行し,htmlをテキストファイルに保存する. 5. `curl https://twitter.com/誰かのアカウント?lang=ja >> out.txt` を`cron`などで(1秒以上間隔を開けて)定期的に実行する. 6. Pythonのライブラリの`requests`から`https://twitter.com/誰かのアカウント?lang=ja`に定期的にHTTP GETリクエストを送り,得られたhtmlをデータベースに保存する. 7. Pythonのライブラリの`selenium`から`https://twitter.com/誰かのアカウント?lang=ja`に定期的にHTTP GETリクエストを送り,得られたhtmlをデータベースに保存する. 8. 6, 7のプログラム終了した後,データベースに保存したhtmlからYoutubeリンクのURLだけを抜きとり,その文字列を別のデータベースに保存する. 9. 6, 7のプログラムを実行しながら,データベースに保存したhtmlからYoutubeリンクのURLだけを抜きとり,その文字列を別のデータベースに保存する. 10. Pythonのライブラリの`requests`から`https://twitter.com/誰かのアカウント?lang=ja`に定期的にHTTP GETリクエストを送り,得られたhtmlからYoutubeリンクのURLだけを抜きとり,その文字列をデータベースに保存する. 11. Pythonのライブラリの`selenium`から`https://twitter.com/誰かのアカウント?lang=ja`に定期的にHTTP GETリクエストを送り,得られたhtmlからYoutubeリンクのURLだけを抜きとり,その文字列をデータベースに保存する. ### おわりに 雑多な質問で恐縮ですが,お答えいただけると幸いです. ちなみに,上記の1.以外はいずれもまだ実行していません. ~~私は全てやっても大丈夫だと思います.~~ 退会済みユーザ様の回答にもあるとおり,やはり規約的にスクレイピングは厳しそうですね. とりあえず,1. は問題ないでしょう.2.はブラウザの機能を使うのでおそらく問題ないのではと思います.その他は一見ダメそうですが,Twitterが想定している方法がブラウザからのアクセスだとすると,`selenium`からのアクセスはどうなるのでしょうか? * 私は法律や規約に関しては詳しくないので,ここで質問させていただきました.回答の根拠となるソースを教えていただけましたら,この上なくありがたいですが,お気軽に回答してください. * Twitter APIを使えという回答はごもっともですのでご遠慮ください. * 一部に対してだけでも良いのでご回答いただけると嬉しいです. * ~~Twitterに確認するのが最も適切な解決方法であることは重々承知しておりますが,Twitterの問い合わせフォームを一読したところ,私の質問に対応したものがないと思ったので,こちらで質問させていただきました.もし,適切な確認先(具体的な質問フォーム,メールアドレスなどの連絡先)をご存知でしたらご教授いただきたいです.~~ * 申し訳ありません.公式フォーラムが適切な問い合わせ先でした.こちらに問い合わせてみますが,**有識な皆様のご意見をお聞きしたい**ので,公式からの返答がない間は未解決としておきます. * **無論やらないに越したことはありません.**
回答: > > User-agent: * > > Disallow: / > > > https://syndication.twitter.com/robots.txt **robot.txt**によるとサイト全体に対してクロールが拒否されていますので、5~11は禁止されていると思います。 手動でやるような1~4は許可されてると思います。