このページで紹介するメソッド
「LesserScraping」での要素(Element)の指定方法は8つあります。その中で「TagName」はHTMLのタグを指定して要素を指定できます。「name」や「ClassName」と同様、それだけでは要素を特定することができません。「id」「name」「class」が設定されていない要素も指定できますが、ページ構成の変更の影響を受けやすく、使用優先順位は低いです。このページではExcelVBA(マクロ)で指定した要素をGoogleChrome(以下chrome)でクリックする「Click」メソッドについて、TagNameで要素を指定する方法を解説します。要素の指定方法は他のメソッドでも同様です。
事前準備(LesserScraping)
chromeのプロファイルを作成済、かつ「LesserScraping」というクラスが用意されていることを前提に解説をすすめますが、何を言っているかわからないよという方は、まず初回記事を読んでください。
引数
■第1引数:element_value_or_path
⇒文字列で「ClassName」や「TagName」を渡します。
■第2引数:element_type
⇒「lsClassName」や「lsTagName」といった専用定数(列挙型変数)で指定します。「lsId:0」「lsName:1」「lsClassName:2」「lsXpath:3」「lsCssSelector:4」「lsLinkText:5」「lsParticalLinkText:6」「lsTagName:7」
■第3引数:element_index
⇒「ClassName」や「TagName」など、それだけでは要素を特定できない場合にインデックスを指定します。インデックスは「1」始まりです。
■第4引数:wait_time_value
⇒クリックをしたあとの停止時間(読み込み待ち時間)をミリ秒(1000ミリ秒⇒1秒)で指定します。指定しなければ100ミリ秒を指定したことになります。
TagNameでの要素の指定方法
このページではクリックする要素の特定にTagNameを使用しています。タグが指定されていない要素は存在しないため、あらゆる要素の指定に使用できますが、XPathで置き換えることができるため、特殊なタグが指定されている等の場合でない限り使用することはない想定です。タグは重複して存在しているため、要素番号の指定が必要です。
サンプルコード(クリックでコピー)
Private Sub Test_LesserScraping_ClickByTagName()
Dim Driver As LesserScraping: Set Driver = New LesserScraping
Call Driver.Start
Call Driver.NavigateTo("https://funcref.com/", 1500)
Call Driver.MaximizeWindow
Call Driver.Click("option", lsTagName, 2, 500)
Call Driver.Click("pre", lsTagName, 1)
Set Driver = Nothing
End Sub
【結果】TagNameを指定して要素をクリックすることができました
サンプルコードの実行結果はname版・ClassName版と同様です。ClassNameの代わりに「pre」というタグと、先頭からの番号「1」を指定して、関数が表示されているテキストエリアの要素を特定しています。またプルダウンの選択も要素指定に「option」タグを指定しています。
業務用PCでスクレイピングするなら「LesserScraping」
業務用PCでExcelVBA(マクロ)からWebスクレイピングをしようとすると「Selenium Basic」の導入でつまずく方は多いです。当サイトでは劣化版Selenium Basicと呼べる「Lesser Scraping」を開発し無償で公開しています。
Comment