|
お世話になります。
サンプルを編集したのですが、IE上の欲しい部分の指定方法がいまいち分かりません。
下記サイトの 順位〜安値、1〜50までので情報をEXCELに書き出したいです。 <http://www.kabudragon.com/ranking/yasune.html>
IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = True url = "http://www.kabudragon.com/ranking/yasune.html" IE.Navigate(url) //URLを開く BusyWait(IE) //待つ Excel = XLOPEN(True) // 新規でExcel起動 Pro版の関数 Excel.Range("A1").ColumnWidth = 16 // A列の幅 dim head[] = "順位","コード","名称","市場","取引値","前日比","昨年来安値の値下がり率","出来高","高値","安値" XLSETDATA(Excel, head, "A1") //A1から右に配列で入力 // データ取得 body = IEGetSrc(IE, "BODY") body = Copy(body, Pos("安値",body)) // 取得開始位置 ←ここから先がいまいち分かりません。 body = Copy(body, 1, Pos("</TBODY>",body)) // 取得終了位置 num = Length(SPLIT(body, "</tr>"))-2 // 行数 dim sdat[num][13] cnt = 1 for y = num to 1 step -1 for x = 1 to 13 // 列 sdat[y][x] = BetweenStr(body, "<td>", "</td>", cnt) cnt = cnt + 1 next next XLSETDATA(Excel, sdat, "A2") // 一括で設定 Pro版の関数
// 画面更新待ち CONST WM_ACTIVATE = 06 DEF_DLL SendMessageA(Hwnd,Long,Long,Dword):Bool:user32.DLL Procedure BusyWait(ie) Sleep(0.5) // Wait Const TIME_OUT = 90 tm = Gettime() repeat Sleep(0.2) ifb Gettime() - tm > TIME_OUT MsgBox("Time Out:BusyWait") ExitExit endif until (! ie.busy) and (ie.readyState=4) Sleep(0.5) SendMessageA(ie.Hwnd, WM_ACTIVATE, 0, 0) Fend
よろしくお願いします。
|
No.2045 2016/01/16(Sat) 20:42:14
|
☆ Re: IEの欲しい範囲をEXCELにコピーしたい / umiumi |
|
|
HTMLの内容は自分で解析してください。 // データ取得 regex = CREATEOLEOBJ("VBScript.RegExp") // 正規表現を使いタグを潰す為 regex.Global = True regex.Pattern = "<[^>]*>" tbl = SPLIT(IEGETSRC(IE, "TAG=TABLE", 7), "</tr>") // 7つ目のテーブル num = Length(tbl)-2 // 行数 dim sdat[num][13] for y = 1 to num lin = regex.Replace(tbl[y], "<#TAB>") // タグをタブに変換 x = 1 while lin <> "" s = Trim(Token("<#TAB>", lin)) if s = "" then continue sdat[y][x] = s x = x + 1 wend next XLSETDATA(Excel, sdat, "A2") // 一括で設定 Pro版の関数
|
No.2047 2016/01/17(Sun) 00:51:49
|
|
☆ Re: IEの欲しい範囲をEXCELにコピーしたい / KAZ |
|
|
umiumi様
早急なご対応ありがとうございました。 データ取得できました。
HTML勉強します。
またよろしくお願いします。
|
No.2048 2016/01/17(Sun) 11:43:17
|
|