WebサイトからデータをExcelに取得する方法④
みなさん、こんちには!
いよいよ取得したテキストから、必要な項目を切り分けていきましょう。
Internet Explorerを使う場合は、下記のようなメソッドが使えるのですが、
今回は、テキスト操作に今後も役立つ区切り文字で取得していきたいと思います。
下記は、区切り文字で切り出すためのコードになります。
私自身かなりの頻度で使っています。
テキストを見ながら 商品一覧ページをブラウザで見てみると、
<div class=”dui-container searchresults”>
から、商品一覧が始まっていると思われるので、それまでの文字列をこのタグで区切って取り除いてみましょう。
文字列の中に「”」を表示するとエラーになるので「” & Chr(34) & “」に置き換えています。
次に商品一覧が終わったと思われる下記までを タグで区切って取り除いてみましょう。
<div class=”dui-container pagination _centered”
それでは、商品名を取得してみましょう。
商品名は <a title= ・・・・・ > 商品名 </a> のようにタグで囲まれるので抽出してみましょう。しかし「 ・・・・・ 」の部分は、商品によって変わりますので、分割して取り除きます。
これをコードに表して見ましょう。
次回は、総まとめで商品一覧の中の商品名全てをシートに抽出したいと思います。
WebサイトからデータをExcelに取得する方法④
みなさん、こんちには!
いよいよ取得したテキストから、必要な項目を切り分けていきましょう。
Internet Explorerを使う場合は、下記のようなメソッドが使えるのですが、
今回は、テキスト操作に今後も役立つ区切り文字で取得していきたいと思います。
下記は、区切り文字で切り出すためのコードになります。
私自身かなりの頻度で使っています。
テキストを見ながら 商品一覧ページをブラウザで見てみると、
<div class=”dui-container searchresults”>
から、商品一覧が始まっていると思われるので、それまでの文字列をこのタグで区切って取り除いてみましょう。
文字列の中に「”」を表示するとエラーになるので「” & Chr(34) & “」に置き換えています。
次に商品一覧が終わったと思われる下記までを タグで区切って取り除いてみましょう。
<div class=”dui-container pagination _centered”
それでは、商品名を取得してみましょう。
商品名は <a title= ・・・・・ > 商品名 </a> のようにタグで囲まれるので抽出してみましょう。しかし「 ・・・・・ 」の部分は、商品によって変わりますので、分割して取り除きます。
これをコードに表して見ましょう。
次回は、総まとめで商品一覧の中の商品名全てをシートに抽出したいと思います。
WebサイトからデータをExcelに取得する方法③
みなさん、こんちには!
前回の文字化けを解決して行きましょう。
今回は、ADODB.Stream を使った文字コードの変換をしてみます。
「ADODB.Streamオブジェクト」を CreateObject関数で生成する。
準備が整いましたので、変換してみましょう。
前回の web_con.responseText から web_con.responseBody に変わっているのに、気付かれたと思います。返り値が違うのです。
ADODB.Stream を順を追ってコメントしていきます。
.Open ADODB.Stream を開きます。
.Position = 0 カーソルを一番最初に移動する。
.Type = 1 バイナリモードに設定する。
.Write web_con.responseBody バイナリデータを書き込み
.Position = 0 カーソルを一番最初に移動する。
.Type = 2 テキストモードに設定する。
.Charset = “EUC-JP” 文字コードを EUC-JP に設定する。
HTML_str = .ReadText EUC-JP で訳したテキストを読み出す。
.Close ADODB.Stream を閉じる。
今回出来上がったコードを表示します。
WebサイトからデータをExcelに取得する方法②
みなさん、こんちには!
前回に引き続き、 WebサイトからExcelを使ってデータを取得 していきます。
今回は、 ステータスを取得し状態を確認してからデータを取得する方法 です。
下記は、前回までのコードです。これに状態を確認して読み込み完了するまで待機するコードを追加していきます。
readyStateプロパティを使って読み込み完了の状態になるまで確認を繰り返すコードを見てみましょう。
web_con.readyState < 4 の 「4」は、 読み込み完了 を表す定数になります。
Sleep 1 は、1ミリ秒を停止するWindows API関数になります。
VBAには Application.Wait メソッドがあるのですが、何時になるまで停止すると言う意味になります。単位も基本的には秒単位になります。これを同じ1ミリ秒を停止するコードを表すと下記になります。
1ミリ秒を表すのみ1ミリ秒/1日になります。コードの見た目なのか秒単位しか出来ないと勘違いなのかは分かりませんが、 Sleep 1 の方が良く使われている様です。
ただし、API関数を使う為には別のコードが必要になります。下記に表示します。
いよいよデータの取得になります。
responseText プロパティを使ってテキストで取得するコードが下記になります。
実行してみましょう。
WebサイトからデータをExcelに取得する方法①
みなさん、こんちには!
WebサイトからExcelを使ってデータを取得する方法は幾つかありますが、
今回はInternet Explorerを使わずに、 HTTPリクエストして、
取得してみたいと思います。
まずは、友だちに配布出来る様にライブラリを追加せずにCreateObject関数を使って
HTTPリクエストをする方法から
「 XMLHttpRequestオブジェクト 」を CreateObject関数 で生成する。
準備が整いましたので、早速Webサイトに HTTPリクエストしてみましょう。
Openメソッドを使って、リクエストをする。
ちなみ「GET」リクエストを取得する場合に使います。送りたいときは「 Post 」を使います。
今回は取得のみなので 「GET」 を使います。
web_con.Open "GET",URL,False
最後に「False」が 付いているの非同期で取得する為です。
これでWebサイトに接続ができました。
次回は、ステータスを取得し状態を確認してからデータを取得する方法に続きます。