
Seleniumを使用してウェブページの<a>タグ(リンク)にアクセスし、クリックしたり、URLを取得したりする方法を紹介します。
まず、Seleniumを使用するために必要なライブラリをインストールし、適切なWebDriverを用意してください。
pip install selenium
また、WebDriver(例: ChromeDriver)に関しては、Seleniumが4.6以降であれば自動でインストール、アップデートしてくれますが、それ以前の場合は用意する必要があります。
その場合は、以下の自動アップデート方法などで自動処理させて利用します。
Seleniumを使って、特定の<a>タグにアクセスする方法はいくつかあります。
リンクのテキストが明確な場合は、
find_element(By.LINK_TEXT, "リンクのテキスト")
を使用できます。
以下がこれを使用した例になります。
pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # WebDriverの起動
driver.get("https://example.com") # 任意のURLを開く
# "サンプルリンク" という文字のリンクを探す
link = driver.find_element(By.LINK_TEXT, "サンプルリンク")
# クリックする
link.click()
driver.quit()
リンクテキストの一部が分かっている場合は、
find_element(By.PARTIAL_LINK_TEXT, "一部のテキスト")
を使用します。
先程と同様以下がこれを使用した例になります。
pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # WebDriverの起動
driver.get("https://example.com") # 任意のURLを開く
# "サンプルリンク" という文字のリンクを探す
link = driver.find_element(By.PARTIAL_LINK_TEXT, "サンプル")
# クリックする
link.click()
driver.quit()
リンクのURLを取得したい場合は、
get_attribute("href")
を使います。
pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # WebDriverの起動
driver.get("https://example.com") # 任意のURLを開く
# "サンプルリンク" という文字のリンクを探す
link = driver.find_element(By.LINK_TEXT, "サンプルリンク")
print(link.get_attribute("href")) # リンクのURLを出力
driver.quit()
リンクテキストではなく、XPathを使って取得することもできます。
以下は、XPathを利用して、Googleの検索ページの「Gmail」リンクを取得し、クリックするコードです。
from selenium import webdriver
from selenium.webdriver.common.by import By
# ChromeのWebDriverを起動
driver = webdriver.Chrome()
# Googleのトップページにアクセス
driver.get("https://www.google.com")
# GmailリンクをXPathで取得してクリック
gmail_link = driver.find_element(By.XPATH, '//a[text()="Gmail"]')
gmail_link.click()
# ブラウザを閉じる(確認したい場合はコメントアウト)
driver.quit()
クラス名やIDで特定のリンクを取得したい場合は、CSS Selectorを使うことができます。
以下は、CSSセレクタを利用して、「Gmail」リンクを取得しクリックするコードです。
from selenium import webdriver
from selenium.webdriver.common.by import By
# ChromeのWebDriverを起動
driver = webdriver.Chrome()
# Googleのトップページにアクセス
driver.get("https://www.google.com")
# GmailリンクをCSSセレクタで取得してクリック
gmail_link = driver.find_element(By.CSS_SELECTOR, 'a[href="https://mail.google.com/mail/&ogbl"]')
gmail_link.click()
# ブラウザを閉じる(確認したい場合はコメントアウト)
driver.quit()
ページ内のすべてのリンクを取得する場合は、
find_elements(By.TAG_NAME, "a")
を使用します。
pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # WebDriverの起動
driver.get("https://example.com") # 任意のURLを開く
# aタグをすべて取得
links = driver.find_elements(By.TAG_NAME, "a")
for link in links:
print(link.text, link.get_attribute("href"))#リンクのURLを出力
driver.quit()
・find_element(By.LINK_TEXT, "テキスト")でリンクを取得
・find_element(By.PARTIAL_LINK_TEXT, "一部のテキスト")で部分一致検索
・get_attribute("href")` でリンクのURLを取得
・find_element(By.XPATH, '//a[contains(text(), "テキスト")]')でXPath検索
・find_elements(By.TAG_NAME, "a")でページ内の全リンクを取得
これらを活用すれば、Seleniumでリンク操作が簡単にできます!