Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ヤクルト1000様は悪夢見せたい -ウルトラスクレイピング-

ヤクルト1000様は悪夢見せたい -ウルトラスクレイピング-

2022.07.15 株式会社IBJ エンジニアゼミ LT会登壇資料

webアプリ
https://yakult1000dreamsimulator.netlify.app/
github
https://github.com/ROM1000-anpn/Yakult1000_dreamsimulator

ROM1000

July 15, 2022
Tweet

More Decks by ROM1000

Other Decks in Programming

Transcript

  1. View Slide

  2. 自己紹介
    加盟店本部 企画制作部
    フロントエンドエンジニア
    山岡 美晴
    ● 最近の趣味

    ● 最近始めたこと

    ● 最近の好きなもの

    View Slide

  3. 自己紹介
    加盟店本部 企画制作部
    フロントエンドエンジニア
    山岡 美晴
    ● 最近の趣味
    ○ 仕事終わりに映画館行く
    ● 最近始めたこと

    ● 最近の好きなもの

    View Slide

  4. 自己紹介
    加盟店本部 企画制作部
    フロントエンドエンジニア
    山岡 美晴
    ● 最近の趣味
    ○ 仕事終わりに映画館行く
    ● 最近始めたこと
    ○ 動画編集
    ● 最近の好きなもの

    View Slide

  5. 自己紹介
    加盟店本部 企画制作部
    フロントエンドエンジニア
    山岡 美晴
    ● 最近の趣味
    ○ 仕事終わりに映画館行く
    ● 最近始めたこと
    ○ 動画編集
    ● 最近の好きなもの
    ○ がうるぐら(ホロライブen)

    View Slide

  6. ヤクルト1000は
    ご存知ですか?

    View Slide

  7. View Slide

  8. View Slide

  9. ヤクルト1000は
    悪夢を見せるらしい

    View Slide

  10. こわい。。。。

    View Slide

  11. 悪夢を見るなら
    最初から内容を予想できれば
    心の準備もできてこわくないのでは?!

    View Slide

  12. ヤクルト1000が見せる悪夢の
    内容予想webアプリ
    作ってみた

    View Slide

  13. https://yakult1000dreamsimulator.netlify.app/

    View Slide

  14. オープンソースにしているので、
    興味がある方は全リソースご覧ください
    Issueやプルリクも大歓迎です!
    https://github.com/ROM1000-anpn/Yakult1000_dreamsimulator

    View Slide

  15. 1. 悪夢の内容を収集(スクレイピング)
    2. 大まかに主語、述語に分ける
    3. 主語、述語をグループ化
    4. それぞれのグループランダムに出力
    5. 悪夢予想ok、心の準備して寝る

    View Slide

  16. 0. 使用するサイト、使用するツール
    Twitter検索
    selenium
    コロモー

    View Slide

  17. 0. 各種バージョン
    $ python3 -V
    3.7.13
    $ pip3 list
    pip 22.1.1
    selenium 3.141.0
    urllib3 1.26.10

    View Slide

  18. 0. 今回はChromeでスクレイピング
    Chrome Driverを公式サイトからダウンロード
    https://chromedriver.chromium.org/downloads
    ※現在使用している chromeのバージョンを確認した上で、対応バー
    ジョンの一致するzipファイルをダウンロードする
    zip解凍して実行する

    View Slide

  19. Chrome Driverを公式サイトからダウンロード
    https://chromedriver.chromium.org/downloads
    ※現在使用している chromeのバージョンを確認した上で、対応バー
    ジョンの一致するzipファイルをダウンロードする
    zip解凍して実行する
    ok⇨
    0. 今回はChromeでスクレイピング

    View Slide

  20. 0. 事前準備
    Chrome Driverを使えるようにする

    View Slide

  21. 悪夢の内容を収集

    View Slide

  22. 1. 悪夢の内容を収集(コロモー)
    コロモー
    コロモーでのスクレイピング

    View Slide

  23. 1. 悪夢の内容を収集(コロモー)
    コロモー
    コロモーでのスクレイピング
    検証ツールで取得したい文言がなにで囲まれているか確認

    View Slide

  24. 1. 悪夢の内容を収集(コロモー)
    コロモーでのスクレイピング
    検証ツールで取得したい文言がなにで囲まれているか確認
    コロモー

    View Slide

  25. 1. 悪夢の内容を収集(コロモー)
    コロモー
    $ python3 [実行したいファイル名].py

    View Slide

  26. 1. 悪夢の内容を収集(コロモー)
    コロモー
    $ python3 [実行したいファイル名].py

    View Slide

  27. 1. 悪夢の内容を収集(Twitter)
    Twitter検索

    View Slide

  28. 1. 悪夢の内容を収集(Twitter)
    Twitter検索
    まず、Twitterのスクレイピング対策の本気度がヤバい

    View Slide

  29. 1. 悪夢の内容を収集(Twitter)
    Twitter検索
    まず、Twitterのスクレイピング対策の本気度がヤバい
    文字列がよくわからない区切りで分けられている

    View Slide

  30. 1. 悪夢の内容を収集(Twitter)
    まず、Twitterのスクレイピング対策の本気度がヤバい
    しかしそれを包括している要素に
    data属性があるという抜け道発見
    Twitter検索

    View Slide

  31. 1. 悪夢の内容を収集(Twitter)
    まず、Twitterのスクレイピング対策の本気度がヤバい
    実行してもエラー吐く どうやら取得したい要素がないらしい
    Twitter検索

    View Slide

  32. 1. 悪夢の内容を収集(Twitter)
    まず、Twitterのスクレイピング対策の本気度がヤバい
    なのでこうしてみる
    Twitter検索

    View Slide

  33. 1. 悪夢の内容を収集(Twitter)
    まず、Twitterのスクレイピング対策の本気度がヤバい
    なのでこうしてみる
    Twitter検索
    ページを開いたら5秒待つ
    5秒待っている間に取得したい要素がレンダリングされて
    取得できるはず…!
    time.sleep(5)

    View Slide

  34. 1. 悪夢の内容を収集(Twitter)
    Twitter検索
    $ python3 [実行したいファイル名].py

    View Slide

  35. 1. 悪夢の内容を収集(Twitter)
    取得できた、ザコめ
    Twitter検索
    $ python3 [実行したいファイル名].py

    View Slide

  36. 1. 悪夢の内容を収集(Twitter)
    どうしてTwitterはスクレイピングしにくくしているのか?
    Twitter検索

    View Slide

  37. 1. 悪夢の内容を収集(Twitter)
    どうしてTwitterはスクレイピングしにくくしているのか?
    Twitter検索
    Twitterの利用規約にスクレイピング禁止とありました
    利用規約違反すると、アカウント凍結されるそうです
    しかしログインなしでスクレイピングすれば、アカウント特定できないのでは…
    そもそも商用利用するわけでないし、サーバーに負荷かけない範囲でスクレイ
    ピングするので、今回は特に気にしませんでした

    View Slide

  38. 大まかに
    主語、述語に分ける

    View Slide

  39. 2. 大まかに主語、述語に分ける
    これを、

    View Slide

  40. 2. 大まかに主語、述語に分ける
    これを、こう

    View Slide

  41. 主語、述語を
    グループ化

    View Slide

  42. 3. 主語、述語をグループ化

    View Slide

  43. それぞれのグループを
    ランダムに出力

    View Slide

  44. 4. それぞれのグループをランダムに出力

    View Slide

  45. 4. それぞれのグループをランダムに出力

    View Slide

  46. 4. それぞれのグループをランダムに出力

    View Slide

  47. https://yakult1000dreamsimulator.netlify.app/

    View Slide

  48. 5. 悪夢の予想ok、心の準備して寝る

    View Slide

  49. 5. 心の準備してるから悪夢見てもこわくない

    View Slide

  50. 5.
    無敵

    View Slide

  51. 感想
    ● スクレイピング使うと
    簡単にこのwebアプリ作れる
    ● 初めて書いたpython、
    囲いがなくて不安になった
    ● こわい夢シャッフルすると
    全然こわくなくなる

    View Slide

  52. 報告
    先日ヤクルト1000を頂いたので、
    寝る前に飲んで怯えて就寝した結果…

    View Slide

  53. 報告
    マジで何も見なかった

    View Slide

  54. ご清聴ありがとうございました

    View Slide