【PythonによるWebスクレイピング入門】vol.01:ログインなどのブラウザ操作を自動化しよう(Selenium)
Вставка
- Опубліковано 5 вер 2024
- みなさんお待ちかねのPythonによるWebスクレイピング入門第一弾です!
Pythonを学び始めた方の多くが、今回お伝えする「Webスクレイピング」に興味を持っているのではないでしょうか?
今回お伝えするSeleniumを用いることで、習得コストを抑え、業務自動化を簡単に実現することができます。本動画では、ログインを中心としたブラウザ操作の自動化についてお伝えします!
◎ChromeDriver - WebDriver for Chrome
chromedriver.c...
◎講義で使用するページ
scraping-for-b...
■ 本講座のベースになっているUdemy講座
PythonによるWebスクレイピング〜入門編〜
www.udemy.com/...
■ PythonによるWebスクレイピング入門
Pythonを用いた業務効率化、自動化の中でも代表的なWebスクレイピングについてお伝えしていきます。ブラウザ操作の自動化からテキストや画像データの自動抽出等を行う方法についてわかりやすくお伝えします。
■ 他シリーズ人気動画
習得したい言語第1位!!Pythonとは? | 中学生でもわかるPython入門シリーズ
• 01. 習得したい言語第1位!!Python...
クラス | 中学生でもわかるPython入門シリーズ
• 15. クラス | 中学生でもわかるPyth...
PythonでぐるなびAPIを扱おう | Python活用シリーズ
• PythonでぐるなびAPIを扱おう | P...
■ Twitter
/ 03imanyu
■ Udemy
www.udemy.com/...
#Webスクレイピング #Python #Selenium
ありがとうございます。別の動画を見てやっていましたが、うまくいかず挫折していました。本動画を参考にしたら何故かうまくできました。
おぉ、上手くいったようで良かったです!!!
素晴らしい動画、本当に有難うございます。
この動画で、”挫折のループ”から生還しました。
これは、けして大げさな表現でなく、私の様な超初心者+ポンスケには、
”溺れる者は藁をも掴む”の”命の藁”です。
いまにゅさんの、今後の一層の活躍を期待します。
そのようにおっしゃっていただき非常に嬉しいです。。。!!!
はい!初学者に優しいコンテンツをしっかり作っていきます!!
分かりやすい・・・今まで独学でスクレイピングの勉強して挫折して。
実際にコードを打ち込んで実行できた時の嬉しさが半端ではなかったです。感無量でした!
ありがとうございます!
コメントありがとうございます!!
そのようにおっしゃっていただき嬉しいです!!
シリーズものとして、引き続き出していくので、是非ご覧になっていただければと思います!
Progateさんの方から入り、現在チュートリアルがざっと一周目終わった文系の初学者です
ディレクトリなどそもそもの環境についての理解すら浅く、Errorを吐きながらも他のサイトも参照しながら試行錯誤し、2時間かけて何とか実行できました!
まだスタート地点も見えませんが、これからもいまにゅさんの動画を参考に壁にぶち当たりながら頑張ろうと思います!素敵な動画ありがとうございます!
おぉ、壁にぶち当たりながらも2時間お疲れ様でした!!
間違いなくその経験が最初は非常に重要です!!
私もエラーで何度嘆いたことか、、、
ぜひ引き続き頑張ってください!
キノコードの説明じゃできなかったのにできました、、ありがとうございます。
おぉ、それは良かったです!!!
素晴らしくわかりやすく丁寧ですね!おかげさまでようやくSeleniumを実用的に動かせるようになりました。本当に助かりました。
無事動かせたようで良かったです!!
とても分かりやすく、楽しいです。他の動画も見てみます。
ありがとうございます!!
是非楽しんでいただければと!!
すごく説明がわかりやすくて面白かったです!
ありがとうございます😭
簡単そうだな〜と思ってやってみたらジュピターラボのインストールに躓きまくって1時間くらいかかった
m1macでは通常のやり方ではhomebrewが入れられないとなんとか
初めまして!わかりやすく丁寧な動画をありがとうございます
スクレイピングの流れを理解できました
こちらこそご視聴ありがとうございます!!!
質問なのですが、windowsでシームレスモードにする場合はどのようにすればいいのでしょうか?
この動画ではmacでbrowser=…の処理で引数なしですが、windowsではすでに引数が入っているためうまく処理ができませんでした
試したことは第二引数として実行→第一と第二入れ替えて実行
別のbrowser=を作って処理→一つ目のbrowser=の前後で実行
他のサイトも見てみましたが載っていませんでした
教えていただけると幸いです
待望のシリーズ✨
お待たせいたしました!!
面白い講座を引き続き配信していきます!!
色々見たけど一番わかりやすかったです。
ありがとうございます!!
本当にいつもお世話になってます
コメントありがとうございます!
そのようにおっしゃっていただき非常に嬉しいです!!
引き続き頑張ってください!!
Selenium4ではfind_element_by_* が非推奨のようですが推奨の書き方の説明があると助かります。
ここに書き込んでいる皆さんはSelenium3で利用されていたのでしょうか。
参考になりました。
headlessモードでwindowがポップアップされる場合、新しいウィンドウの要素を取得できません。
何かいい方法はないでしょうか?参考になる動画などあればご教示願います。
ウィンドウの数が増えていること、ウィンドウのスイッチも確認しましたが、新しいウィンドウの要素を取得できず、ネットを彷徨っています。。。
100回くらいいいねを押したいです!!
そんな嬉しいコメントありがとうございます!!!!
素人の私でもわかりやすく大変重宝しております
現在この動画を拝見し、Webスクレイピングにチャレンジしていますがどうもselenium4+googlecolabの組み合わせで行くとChromeDriverを使ってブラウザを立ち上げる段階で
パーミッションエラーなどが発生し、動画のような動きになりません
使用OSはWindowsです
ChromeDriver.exeのPath指定もできているようにも思えます
また、13分ぐらいからの!pip install webdriver_managerを利用してもうまくいきません
いろいろ検索してみたのですがselenium4+python3.7の相性が悪い気がしています
お忙しいところ恐縮ですが現段階での、ベストプラクティスがあればご教授ください
よろしくお願いいたします。
Chrome OSの場合も教えて下さい。
ウェブが立ち上がってすぐ消えてしまうのですがなぜですか?
動画いつも参考にさせていただいてます。
Mac環境です。
Homebrewをローカル、Googlelab両方にインストール済みです。
Googlelabで
!brew install chromedriverと入力すると
/bin/bash: line 1: brew: command not foundと返ってきてしまいます。
パスが通っていないのかとも思いましたが、ローカル環境ではすでに通しています。
同様の質問をされている方もいらっしゃって、内容を読んでみましたが、分かりませんでした。
何かTIPSをいただければと思います。
Mac bookでbrewがインストール出来なくてChromedriverのカッコの中にパスを入れたら動きました何か違いがあるならご教示をお願いします
windowsでの質問ですが、jupyterlab内で「!pip install selenium」としても無反応なのにターミナル内で「pip install selenium」なら出来るのは何か設定がおかしいのでしょうか?
初心者質問ですみません。
分かりやすい講義ありがとうございます。
質問よろしいでしょうか?
15:00以降のWindowsでのChromeDriverがインストールできませんでした。
エラーの意味が分からなく、教えていただくことは可能でしょうか?
VSコードで同じように試したのですが、
webdriverをインポートしたらNo module named 'selenium'と出てきて知って進めませんでした。何か解決方法はありますか?
ログインボタンにidがない場合、
find_element_by_の続きはどのように指定すればいいでしょうか。
ちなみにclass, type, ng-clickは書いてあります。
Selenium BasicによるChrome操作と、PythonによるChrome操作はどんな違いがあるのでしょうか?
超初心者なのですがブラウザの起動をしようとすると
TypeError Traceback(most recent call last)
〈ipython-input-16-1d1a6ad76471〉in〈module〉
----〉 1 browser = webdriver.chrome(ChromeDriverManager().install())
TypeError: 'moduie' object is not callable
と表示されてしまうのですが解決方法を教えて下さいお願いします
Windows10です
コメントありがとうございます!!
おそらく上記は「()」が半角ではなく全角になっているから起きているエラーです。
また、ある程度Python基礎知識がないと厳しいと思います。。。
いつも学習させていたいているものです。
elem_username = browser.find_element_by_id('username')
エラー(AttributeError)が返ってきます!
なぜでしょうか?
ご回答のほど、よろしくお願いします。
いろいろ試してみました。すごいです。ありがとうございます。ところで、これを実際にwindows環境で使う場合、どうするのが効率的なのですか。例えば、exeファイルにしたりするべきなのでしょうか。だとしたら、どうすればそれはできるのでしょうか。よければ教えてください。
コメントありがとうございます!
実際に試されたようで素晴らしいです!!
「実際にWindows環境で使う場合」、というのはどういうことでしょうか。。?
現在はどのような環境で実装されていますか。。?
exeファイルをどこかに格納し、そのパスを記述するのが一般的ではありますが、動画でお伝えした、都度インストールする形でも全く問題ないです!
好みによるかと!
これみてやってみてるんですけど、22:18あたりからユーザーネームの入力用のコード書いている中でfind_elementかfind_elementsしか候補が出てこない場合どうしたらいいですか?
Pythonでの開発経験少ないもんで申し訳ありません
windows環境です。
browser = webdriver.Chrome('chromedriver.exe')かつ
browser = webdriver.Chrome(options=options)としたい時、
()内はどう記述するのでしょうか?
はじめまして、いつもわかりやすい説明大変助かります!
質問なのですが、MACのターミナルでhomebrewをインストールしようとすると
Use '--' to separate paths from revisions, like this:
'git [...] -- [...]'
と表示されるのですが、これはどのような対応をすべきなのでしょうか?
ご教示よろしくお願いいたします!
頂いた情報だけだとわからないですね。。。
最高
ありがとうございます!!!😍
!brew install chromedriver
を実行すると
'brew' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
となってしまいます。その時はどのようにしたらよいのでしょうか?
Macでしょうか?
@@imanyu_programming
windowsです
あ、そこで失敗してその先をよく見てませんでした。動画で説明してますね。
まず、ジュピーターラボがわからない。そいうのが無い人はそれをインストールすればいいんですか?
とても分かりやすいです。
質問なんですが、
ブラウザを開く際ヘッドレスモードと、自動で更新してWindowsを開く操作を並行して行うことはできるのですか?
もしあればコードを教えてもらえると嬉しいです。
よろしくお願いします。
コメントありがとうございます。
自動で更新とはどういうことでしょうか。。。?
@@imanyu_programming
windowsの場合、ChromeDriverをインストールして記入しないといけないですが。
動画内で自動でドライバーをインストール更新を行えるコードが紹介していてそれと並行でヘッドレスモードを使いたいので出が可能でしょうか?
たいていのサイトはIDついてないんですが、その場合は?
いつもながら素人でも実行できる動画ありがとうございます。普段会社で使用しているシステムでも問題なく実行できました。
ただ、一つ難しいのが会社のパスワードが2段階認証で、2回目のパスワードは手入力ではダメでブラウザに表示されるピンパッドを選択する必要があります。そのピンパッドに割り振られる数値が更新ごとに変わるため、開発者ツールでidでピンパッドの名前は取れるのですが表示されている数値が見当たらず取得できませんでした(class、srcには記載なし)。
セキュリティー的に難しいかもしれないのですが、上手い方法などご存知でしょうか?
コメントありがとうございます!!
申し訳ございません、おっしゃっている内容はなんとなく分かるのですが、具体的なイメージが明確でないため、なんとも言えないです、、、
もしかしたら難しいかもしれません。
@@imanyu_programming 回答ありがとうございました。1回目の入力画面は17:41と同じようなIDとパスワードを入力できるテキストボックスがあるのでそこに入力するのです。ここは動画の通りで問題なくいけました。
2回目はイメージとして「スマホのロック解除のためのパスワード画面」のようなもので各ボタンに0〜9の数値がついておりボタンを押すと数値をパスワードのボックスに入力できます。加えて、数値の割り振りが毎回変わります(ボタンの位置や使う数値0〜9は同じですが、0〜9の場所が毎回変わります。)
よって、その瞬間に見えるボタンのidを取得してクリックさせても、次の時はボタンに振られている数値が変わっているためうまくいきません。
@@KIYO-UA-cam HTML、JS周りをしっかりみてみないとなんとも言えないですね、、、
HTML、JSのコードにヒントがなければ、画像認識等を活用していく必要がありそうですね、、、
超初心者です
初歩的な質問で恐縮ですが
!brew install chromedriverのところで
brew: command not found
となってしまうのですが
Macでしょうか?
Windowsでしょうか?
Macでしたら、そもそもbrewがインストールできていないと思います
Macで、Homebrewは先程いれてみましたが、
Google colabで動かしているからでしょうか?
colabの場合はどのようになりますでしょうか
@@anma-df2yj colabではできませんので、ターミナル等をお使いください。
大変失礼いたしました 汗💦
11:08 Windwsでエラー
はじめまして、ヒントだけ下さい!
今回は指定の場所を取得、入力としましたが、
例えば、画像を差し込める所に用意した画像を差し込む事も可能なのでしょうか?
コメントありがとうございます!
それは画像のアップロードを意味していますか??
mac環境なのですが、
browser = webdriver.Chrome()と実行すると、
No such file or directory: 'chromedriver'などのエラーが出てしまって、
ブラウザが起動しません。
解決できますか?
12:56 移行のやり方で試してみて下さい!!
@@imanyu_programming ありがとうございます!
解決しました!
サイトにログインをしようとするとサーバーレラーと表示されます。ものすごく参考になるので講座の購入して学習を考えいるのですが有料版のwebページはログインはできるのでしょうか?
問題なくログインできると思います、、、
ユーザー名、パスワードが間違っていないかをご確認いただければと
連絡ありがとうございます!パスワードが間違えていると「ログインに失敗しました」っとエラーメッセージがでるのですが今回ログインはできてその後「Internal Server Error」になってしまいます。
大変失礼しました!ログインすることができました!有料版にて学習して行きたいと思います!ありがとうございました!
Mac なんですけど、browser = webdriver.Chrome() の部分でWebDriverException: Message: unknown error: cannot find Chrome binaryとなりエラーになります。解決策を調べてもよくわかりませんでした、、どうしたらうまく実行することができますか?
13:00 あたりの内容は試してみましたか??
@@imanyu_programming どうやらデスクトップにのみgoogle chrome を保存していたことが原因のようでした。でも助かりました、ありがとうございます!
感動しました!
そのようなコメントいただき非常に嬉しいです!!
是非楽しんで活用いただければと!!
最後のヘッドレスモードが指示通り打ち込んでいるがうまくいかないです。
対処法はありますか。
コメントありがとうございます。
エラー内容、また、どのようにうまくいかないのかが分からないため、対処法をお伝えするのが難しいです、、、
@@imanyu_programming
申し訳ありません。
システムに接続されたデバイスが機能していませんと。コマンドプロンプトに表示されてしまいます。
@@user-gw1dx7cz5k いただいた情報だけだと原因が掴めませんが、jupyter notebookでエラーが出ているわけではないのでしょうか、、?
こちら、パソコンを閉じた状態でも自動でダウンロードできますか?
またこの取得したファイルをスプレッドシートに書き込むことは可能でしょうか?
閉じた状態では動きません、、
何かしらのサービスを駆使しないと厳しいです。
他のライブラリを使えばスプレッドシートに書き込むことも可能です。
@@imanyu_programming ご返信ありがとうございます!
定期的にダウンロードを自動化する場合はクラウドで開発しなければいけないのでしょうか?そもそも不可能なのでしょうか?
ご回答いただけると幸いです!
@@user-fv3xt3fw3h クラウド環境等にファイルをアップし、定期実行する仕組みを作る必要があります。
@@imanyu_programming ご回答ありがとうございます!
Python未経験でも、こちらの動画でスクレイピングをすることができました。
ありがとうございました!
@@user-fv3xt3fw3h python未経験だったんですね、、
すごいです!引き続き頑張ってください!
作業フォルダにどうやって入れるんですか?
login後、error500 internal service error が出てしまいます
ユーザー名、もしくはパスワードが間違っている可能性ありますね。
webサイトのリストを取りたいのですがてれないです!!
どうしたらいいですか?
コメントありがとうございます!
Webサイトのリストとは具体的にはどのような内容でしょうか?
頂いたコメントだけだとイメージが付きません。。。
ログインする前の選択するところなのですが、すみません知識不足で
10:20
の部分にあるように入力して実行したのですが,Chromeを一瞬立ち上げてすぐ閉じてしまいます.
その後,大量のメッセージが表示されます.
この場合,どのように対処すればよろしいでしょうか.
いただいた情報だけではわかりませんね、、、
遅いかもしれないんですけど、クロムドライバーのバージョンを落とせば行けると思います
Chromeのログイン情報を入力できた状態で立ち上げるやり方がいまいちわかりません
コメントありがとうございます!
申し訳ございません、質問の意味が少しわからないのですが、、、
Seleniumでブラウザを立ち上げる場合は、ログイン情報の入力が必須です。
いまにゅって有名人?
いつもお世話になっております。
elem_username = browser.find_element_by_id('username') と打つこんで下記のエラーが発生しました。どう対処すればよろしいでしょうか?わかる方いらっしゃったら教えてください。
AttributeError Traceback (most recent call last)
Input In [29], in ()
----> 1 elem_username = browser.find_element_by_id('username')
AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'
>Seleniumのバージョンが4になっていたので、findの様式が変更になっていて、find_element(By.CSS_SELECTOR,"body > div > div:nth-child(9) > a")やidも find_element(By.ID, "login_name")などとしないと、要素を取得できないようでした。この動画は、初めてのときに、とてもわかりやすいので、バージョン4の変更点を、追加説明していただけると、初心者の方が、同じところで、つまずかずによいと思います。ここをやっとクリアして、みごと、自動ログインができて、感動しました。
これですね
from selenium.webdriver.common.by import By
elem_username = browser.find_element(By.ID,'username')
これでうまくいくようです
@@tenikamaka つまづいて、かなり困っていましたが、このコードで突破できました。本当にありがとうございました。
browser = webdriver.Chrome(ChromeDriverManager().install()) ここで以下のようなerrorになってしまいます。
スペルは合っていると思うのですが?
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in
----> 1 browser = webdriver.Chrome(ChromeDriverManager().install())
NameError: name 'webdriver' is not defined
分かりやすくありがとうございます。
ユーザーネームもパスワードも問題なく入力できるのですが、
下記のようなエラーがでます。
_by_が非推奨とのことなのですが、なにが原因でしょうか?
/var/folders/pp/47f7z8s12bv1knrk8cc2rmz80000gn/T/ipykernel_13499/4130779995.py:1: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
elem_username=browser.find_element_by_id("username")
他のサイトで実行する場合、buttonにidがないときは、find_element_○○_○○にすればいいですか?
はい!おっしゃるとおりです!!