LoginSignup
1
2

More than 5 years have passed since last update.

VBAでのスクレイピングメモ(書き途中)

Last updated at Posted at 2017-11-19

[前提1]ハンドラーのオブジェクト構造をまず理解

ハンドラーとか格好良くいっているけども、要はIEを操作するためのクラスオブジェクトのことを言っている。

┏ html(Document) ━━━━━━━━━
┃ ┏ Form ━━━━━━━━━━━━━
┃ ┃ ┏ INPUT ━━━━━━━━━━━
┃ ┃ ┃
┃ ┃ ┗━━━━━━━━━━━━━
┃ ┗ ━━━━━━━━━━━━━
┗━━━━━━━━━━━━━━

VBAやっている人なら理解できると思いますが、
┏ book(Workbook) ━━━━━━━━━━━━━━
┃ ┏ Sheet(WorkSheet) ━━━━━━━━━━━━━
┃ ┃ ┏ Cells/Range ━━━━━━━━━━━
┃ ┃ ┃
┃ ┃ ┗━━━━━━━━━━━━━━━
┃ ┗ ━━━━━━━━━━━━━━━━
┗━━━━━━━━━━━━━━━━━━

のような感じです。
詳しくはMicrosoftの詳細ページでご覧あれ

[前提2]

スクレイピングを行う場合、取得したい文字列や、飛びたいリンクが書かれているHTMLタグを探すわけだけど、じゃあ何を使って特定するか…??

3つある。

①Class属性
②Name属性
③Id属性

サンプルHTML
 ①Class属性
  <FORM ACTION="sample" METHOD="POST" CLASS="testClass">
  <INPUT TYPE="HIDDEN" NAME="NO" VALUE="0">
  </FORM>

 ②Name属性
  <FORM ACTION="sample" METHOD="POST" NAME="testName">
  <INPUT TYPE="TEXT" NAME="AIUEO" SIZE=60 VALUE="">
  </FORM>

 ③Id属性
  <FORM ACTION="sample" METHOD="POST" ID="testId">
  <INPUT TYPE="TEXT" NAME="AIUEO" SIZE=60 VALUE="">
  </FORM>

 ①+②+③の全部乗せ
  <FORM ACTION="sample" METHOD="POST" CLASS="testClass" NAME="testName" ID="testId">
  <INPUT TYPE="TEXT" NAME="AIUEO" SIZE=60 VALUE="">
  </FORM>


基本Formタグとかには①、②、③のいずれかはある場合が多いが、ない時もある。
前提はこの辺にして、
じゃあ実際にどうやって値を取得・設定していくか。

1.テキストボックスに値を設定する

①の場合

objIE.document.getElementsByClassName("testClass")(0).Value = "入力したい文字列";
で取ってくる。この属性の場合複数取得される可能性があるので、
HTMLソース上、取得したいタグが何個目のtestClassであるのか把握しておく必要がある。

②の場合

この場合は楽勝
objIE.Document.Forms("testName").Item("AIUEO").Value = "入力したい文字列";
でいける。
けど、同じnameが複数あったらどういう挙動なのか不明。

③の場合

■クラス
↓"default_btn"クラスの1個目とかで指定
objIE.document.getElementsByClassName("default_btn btn_big_size")(0).Click

■JAVASCRIPTの実行
objIE.navigate "JavaScript:login(this)"

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2