【Python】seleniumでスクレイピング
Table of Contents
はじめに
この記事は、seleniumでスクレイピングする方法を学びたい人向けの記事となります。
私自身も只今Python勉強中でして、個人的にはWebdriverがなかなか動かず苦戦したので、その辺にも触れながら解説したいと思います。
WebDriverをダウンロード
コードに入る前の下準備となりますが、WebDriverを動かすために、次のリンクからchromedriver.exeをダウンロードしてください。私はこれが無くて1時間くらいドツボにハマってしまいました。https://chromedriver.chromium.org/downloads
ダウンロードしましたら、好きなディレクトリに配置してください。
コード提示
seleniumでスクレイピングするコードになります。
このコードは、このブログの記事題名一覧を取得するコードとなっております。自分がスクレイピングしたいサイトに合うように適宜変更してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import requests#データを取得するモジュール from bs4 import BeautifulSoup#取り出したデータを解析するモジュール from selenium import webdriver import chromedriver_binary from selenium.webdriver.common.keys import Keys import time driver = webdriver.Chrome(executable_path=R"chromedriver.exeを配置したパス") driver.implicitly_wait(10) # 下記サイトにアクセス driver.get("https://produce-web.net") while True: try: url = driver.current_url #取得するサイトのURL html = requests.get(url)#指定したURLのサイトから情報を取得 soup = BeautifulSoup(html.content, "html.parser") #取得した情報を解析、バイナリデータを取得 for element in soup.select('.entry-title'): #指定したタグについて、そのタグ内のテキスト部分を取得 print(element.text) # 次のページへの遷移ボタン(>>)を探す next = driver.find_element_by_xpath("//div[@class='nav-links']/ul[@class='page-numbers']/li[last()]/a[contains(@class,'next')]") # 見つかったらクリック next.click() except: # 見つからなかったら終了(最終ページ) driver.close() # 3秒待つ time.sleep(3) driver.close() |