広告

python×seleniumで<a>リンクのhrefを取得する方法

aタグ内のhref属性を取得する時に、[](スクエアブラケット)だったっけ?と、どうしてもseleniumの操作を思い出せない方もいるのではないでしょうか?(自分も)そこで今回はpythonのライブラリseleniumでhref属性の中身(URL)を取得する方法を解説していきます。

ここで学べる事:

  • pythonのライブラリにあるseleniumを使って、aタグ内に記載されたhref属性の中身を取得する

aタグのhref属性を取得するために必要なライブラリ

  • seleniumを使ってブラウザ操作を自動化するライブラリです。
  • webdriverは、Chrome()やFirefox()といった操作するブラウザを選択します

aタグのhref属性を取得するステップ

  1. seleniumのwebdriverをインポートする
  2. Chromeを起動する(FirefoxなどほかのブラウザもOK)
  3. Chromeのwebdriverでhrefを取得したいサイトを開く
  4. aタグが存在する要素を指定する
  5. 指定したaタグからhref属性の中身をget_attribute(‘href’)で取得する

seleniumのwebdriverをインポートする

まずはseleniumをインポートして使えるようにします。

// seleniumをインポートする
from selenium import webdriver

Chromeを起動する(FirefoxなどほかのブラウザもOK)

// Chromeを起動する
browser = webdriver.Chrome()

次にChromeを起動します。

Chromeのwebdriverでhrefを取得したいサイトを開く

// Chromeドライバーでhrefを取得するサイトを開く
browser.get('hrefを取得するページを開く')

hrefを取得するページのURLをgetで取得します。

aタグが存在する要素を指定する

hrefを取得するために、aタグの要素を指定します。例えば以下のhtmlファイルのソースがあると仮定します。

// hrefを取得するページのソースを一部表示させている想定です。
<p class="practice">
 <a href="https://www.xxxxxx.com/article/1653165/">ニュース記事</a>
</p>

上記の場合、find_element_by_class_nameで、aタグを含めたpタグを取得します。その上でaタグを取得します。

// elemの変数にclass属性のpracticeが指定された箇所を取得
elem = find_element_by_class_name('practice')
上記のソースだけであれば、pタグを取得せずとも直接aタグを指定することもできますが、aタグが複数ある場合の実務上も考慮して、class属性を指定した上での方法を選択しています。

指定したaタグからhref属性の中身をget_attribute(‘href’)で取得する

aタグも含めた要素を取得したら、aタグ要素のみを抽出します。aタグを抽出したら、get_attribute(‘href’)でhref属性を取得します。変数に格納したhref属性の中身を確認したいなら、print()で可能です。

// 先ほどの変数elemに格納されたタグの中から,find_element_by_tag_nameを使ってaタグを指定する
// aタグを指定したら、get_attribute('href')を使ってhref属性の中身を取得する
elem_href = elem.find_element_by_tag_name('a').get_attribute('href')
// print()を使って中身を表示する
print(elem_href) //https://www.xxxxxx.com/article/1653165/が表示される

結論:get_attribute()を使ってhref属性の中身が取得できる

つまり、aタグを指定した上で、get_attribute()メソッドを使い、get_attribute(‘href’)を記述すればhref属性を取得することができます。