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を解析するなら、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でのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。
コメント