twitterのしくみを調べる
1.ソースコードを見る
ツイート自体はソースコードにはない。
jsがたくさん参照されているためjsで行っていそう。
とりあえず右クリックから名前を付けて保存してみた。
それを開いてみると
2.Devtoolsでみる
ネットワークにツイートの内容が書かれたファイルがあるかと思ったら見つけられない。
ツイートの本文のDOMのプロパティをみると、innerHTMLで挿入されているらしい。
そのinnerHTMLはどのjsに書かれているのか調べようとしたけどしぬほどjsがあって難読化もめちゃくちゃあってわからぬ。
やっとみつけた。
いつもネットワークはプレビューしか見ておらず、時々ヘッダーやペイロードを見る感じでした。
それでclient_event.jsonファイルのペイロードをちらっと見るとありました。
https://api.twitter.com/1.1/jot/client_event.json
apiとあるためwebapiを利用しているのだろうか。
直接アクセスしても何も表示されない。
ブラウザだとツイッターAPIの申請をしなくてもツイートが見れるのだから、ブラウザと同じ機能を果たせれば同じことができるはず。
もっとwebについて勉強しなければ。
右クリックから コピー>cURL(cmd)としてコピー してcurlで実行するとなんかエラーが出ましたが、なんかめちゃくちゃ長いコマンドが何個も打ち込まれていました。
curlでもこんなめんどくさいなら無理っぽいですね。
ブラウザおそるべし。
3.pythonライブラリのソースコードを見る
twitterをAPIを使わずスクレイピングするpythonのライブラリがあるらしい。
そのライブラリのソースコードはgithubにある。
そのコードを読めばツイッターの仕組みがわかるかもしれない。
これにはtwintの使い方が書いてある。
cという変数にいろいろ情報を入れて
twint.run.Search(c)
これでスクレイピングが始まるらしい。
これを参考にtwintのソースコードを読んでみる。
run.pyのsearch関数を見るとrunという関数が呼ばれている。
run関数をみるとtwint.mainが呼ばれている。
次はtwintクラスのrun。
ツイートの内容はtweets()っぽい。
そこではfeed()でjsonを受け取るっぽい。
get.RequestUrlでjsonを受け取ってるっぽいため、get.pyのRequestUrl()をみる。
そこではRequest()でリクエストを受け取っている。
Request()ではaiohttp.ClientSession()の中でResponse()を呼んでいる。
Response()では.get()して.text()でテキストデータを得ているっぽい。
ということはセッションがこのソースコードを理解するための鍵っぽい。
セッションという単語は何となくしか知らないためぜんぜんさっぱりこーどがわかりませんでした。
そのためセッションについて勉強しようと思います。
ところでgithubは自作関数をクリックするだけで参照できるため便利ですね。
てかYouTubeはソースコードに動画のURLが埋め込んであるくらいなのにTwitterはツイート本文の文字の場所すらjsでいろいろしていてびっくりしました。
あとtwintは使っていないので今も使えるかは知りません。
https://github.com/taspinar/twitterscraper
https://github.com/twintproject/twint
https://github.com/markowanga/stweet
コメント
0 件のコメント :
コメントを投稿