Selenium(Edge/Chrome)

Selenium「データ取得するinnerText/innerHTML/outerText/outerHTML」【エクセルマクロ】

VBAでIE操作の場合は簡単にデータ取得ができましたが、
Seleniumの場合は少し覚えていないといけません。
単純に要素.innerTextではなく、要素.Attribute("innerText") と記載する必要があります。

データ取得は4種類ある

プロパティ内容
innerText指定した要素のテキスト(指定タグを含まない)
outerText指定した要素のテキスト(指定タグを含む)
innerHTML指定した要素のHTMLを全て(指定タグを含まない)
outerHTML指定した要素のHTMLを全て(指定タグを含む)

画面表示されているテキストは、innerTextで取得

人間の目で確認が出来る内容(Webページの表示されている)をデータ取得したい場合は、
innerTextでデータを取得可能です。

'■サンプルコード
'■ID属性nav-searchのテキストデータを取得
    driver.FindElementById("nav-search").Attribute ("innerText")

'■Class属性testの1番目のテキストデータを取得
    driver.FindElementsByClass("text")(1).Attribute ("innerText")

outerTextも設定としてはありますが、私はあまり使いません。
また、取得するデータは「innerText」 = 「outerText」だと考えています。

積極的に覚えなくていい知識
データ取得ではなく、HTMLにVBAからデータ書込をした場合は、
「innerText」=「テキスト部分のみの設定」ですが、
「outerText」=「テキストを囲む HTML タグも含めて取得する」とだけ認識ください。

HTMLを解析するなら、innerHTML OuterHTML

データを取得する(クロールする)というよりも、
VBA上で、Edge/Chromeからデータを解析して、ブラウザの次ページに遷移する場合が多いかもしれません。

InnerHTMLでもOuterHTMLでもどちらでも構いません。
(違いは指定したタグが含まれるかどうかだけです)

//HTMLサンプル
<li>test</li>
'■VBAサンプルコード 
'■innerHTML→ test
    driver.FindElementsByTag("li")(1).Attribute ("innerHTML")
'■outerHTML→ <li>test</li>
    driver.FindElementsByTag("li")(1).Attribute ("outerHTML")

SeleniumBasicについて

Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。

但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

タイトルとURLをコピーしました