Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python Selenium】<a>タグにアクセスする方法



Seleniumを使用してウェブページの<a>タグ(リンク)にアクセスし、クリックしたり、URLを取得したりする方法を紹介します。

 

1.Seleniumのセットアップ

 

 

まず、Seleniumを使用するために必要なライブラリをインストールし、適切なWebDriverを用意してください。

 

 

pip install selenium

 

また、WebDriver(例: ChromeDriver)に関しては、Seleniumが4.6以降であれば自動でインストール、アップデートしてくれますが、それ以前の場合は用意する必要があります。

その場合は、以下の自動アップデート方法などで自動処理させて利用します。

 

 

kuku81kuku81.hatenablog.com

 

 

2.<a>タグを取得する方法

 

 

Seleniumを使って、特定の<a>タグにアクセスする方法はいくつかあります。

 

2.1.リンクテキストで取得

 


リンクのテキストが明確な場合は、

  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()

 



2.2.部分一致するテキストで取得

 


リンクテキストの一部が分かっている場合は、

  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()

 

 

 

2.3.href属性を取得

 


リンクの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()

 

 

2.4.XPathで取得

 


リンクテキストではなく、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()



 

2.5.CSS Selectorで取得

 


クラス名や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()

 

 

3.すべての<a>タグを取得

 


ページ内のすべてのリンクを取得する場合は、

  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()

 

 

4.まとめ

 


・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でリンク操作が簡単にできます!