コード例(webdriverを使ったもの)とその解説Pythonのスクレイピングで困るページの事例の1つPythonのスクレイピングで、その初歩的・基本的なやり方だけでは上手くいかない事例はいろいろありますが、私が困った事例に以下の4つの条件をすべて満たすページがありました。href=”#”>が設定されているそのボタン押してもURLアドレスは同じままで、JavaScriptによってページの一部だけが新しく描写され変更される画像で説明すると、次のような特徴を持つページです。根本的な問題点は、ボタンを押してもページの一部分だけが変更されるだけで、ページアドレスが変わらないことボタンのリンク属性には、href=”#”という2点でした。通常ならば、href=”~”のアドレス部分がわかっていれば、そこにアクセスして・・・という処理が考えられますが、今回は「href=”#”」なので、そこにアクセスしても意味がありません。同じページで同じアドレスのままです。ページアドレスは変わらないものの、ボタンを押せばページ内容は変わるので、まずはボタンを押すことが必要です。そこで「ボタンを押す」→「押した後のHTMLを取得」という処理の流れを考え、次のようなコードを書きました。解決方法は複数あると思いますが、1つの例として以下のようなコードにして解決しました。スクレイピングするための前準備などの処理は省略しました。みなさんの環境にあわせて補ってください。このコードでは、webdriver(Chrome版)のメソッドを使っています。押すべきボタンをXPathを使って特定。上でつくったオブジェクトdriver_htmlを使った処理をいろいろ省略~今回は、まずクリックすべきボタンを特定するためにXPathを使いました。そのXPathを、webdriverのfind_element_by_xpathの引数としています。このXPathの取得方法は、「【Pythonスクレイピング入門】ChromeとSafariでXpathを取得する方法」で画像入りで説明しましたので、そちらをご覧ください。【Pythonスクレイピング入門】ChromeとSafariでXpathを取得する方法そして、特定されたそのボタン要素をクリックすべくclick()メソッドを使っています。driver.get()メソッドで、そのクリックされた後の状態にアクセスし、HTMLを取得しています。したポイントとしては、ボタンクリック後に少しPythonプログラムの実行を待機させるところでしょうか。time.sleep(5)のところです。これを設定しないと、描写完了後のHTMLソースを取得したいのに、描写が完了される前の、つまり以前のままのHTMLソースを取得することになるかもしれません。今回は待機時間を5秒に設定していますが、みなさんがスクレイプしたいページにあわせて調整してみてください。[テックアカデミー]でオンライン講座を受講するのが良いと思います。1人で悩みながら学習を進めるよりもわかりやすく、費やす時間も少なく合理的・効率的に学習できるからです。エンジニア転職保証コース機械学習の基礎が学べる「Pythonコース」データサイエンスコースAI(人工知能)コースなど各種の講座が用意されています。無料で体験できるテックアカデミー無料体験も用意されています。関連投稿Pythonの抽象基底クラス(ABC)の基本を解説。