aタグ内のhref属性を取得する時に、[](スクエアブラケット)だったっけ?と、どうしてもseleniumの操作を思い出せない方もいるのではないでしょうか?(自分も)そこで今回はpythonのライブラリseleniumでhref属性の中身(URL)を取得する方法を解説していきます。
ここで学べる事:
- pythonのライブラリにあるseleniumを使って、aタグ内に記載されたhref属性の中身を取得する
Contents
aタグのhref属性を取得するために必要なライブラリ
- seleniumを使ってブラウザ操作を自動化するライブラリです。
- webdriverは、Chrome()やFirefox()といった操作するブラウザを選択します
aタグのhref属性を取得するステップ
- seleniumのwebdriverをインポートする
- Chromeを起動する(FirefoxなどほかのブラウザもOK)
- Chromeのwebdriverでhrefを取得したいサイトを開く
- aタグが存在する要素を指定する
- 指定したaタグからhref属性の中身をget_attribute(‘href’)で取得する
seleniumのwebdriverをインポートする
まずはseleniumをインポートして使えるようにします。
1 2 |
// seleniumをインポートする from selenium import webdriver |
Chromeを起動する(FirefoxなどほかのブラウザもOK)
1 2 |
// Chromeを起動する browser = webdriver.Chrome() |
次にChromeを起動します。
Chromeのwebdriverでhrefを取得したいサイトを開く
1 2 |
// Chromeドライバーでhrefを取得するサイトを開く browser.get('hrefを取得するページを開く') |
aタグが存在する要素を指定する
hrefを取得するために、aタグの要素を指定します。例えば以下のhtmlファイルのソースがあると仮定します。
1 2 3 4 |
// hrefを取得するページのソースを一部表示させている想定です。 <p class="practice"> <a href="https://www.xxxxxx.com/article/1653165/">ニュース記事</a> </p> |
上記の場合、find_element_by_class_nameで、aタグを含めたpタグを取得します。その上でaタグを取得します。
1 2 |
// 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()で可能です。
1 2 3 4 5 |
// 先ほどの変数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属性を取得することができます。