標題:
[發問]
解決從WEB頁面匯入資料,但無法取得網頁換頁採Java控制之資料
[打印本頁]
作者:
97forum
時間:
2015-8-14 15:59
標題:
解決從WEB頁面匯入資料,但無法取得網頁換頁採Java控制之資料
請教各位先進:
今天想從某個網站匯入頁面資料到Excel,但是由於該網站第一頁乙厚的資料採用Java語法控制,以至於在取得第二頁以後的資料無法匯入。
請問是否有辦法可以匯入第二頁以後之資料嗎?
例如網站 http://www.commotec.com.tw/product/list.aspx?id=2834&brand=AUK
請各位先進幫忙!
作者:
joey0415
時間:
2015-8-14 18:39
本帖最後由 joey0415 於 2015-8-14 18:44 編輯
回復
1#
97forum
第一次用這樣的方式跳轉成功,看來這也是不錯的方式!
若有需行請設定引用項目
microsoft internet controls
Sub 晶偉電子數據查詢()
With CreateObject("internetexplorer.application")
.Visible = True
.Navigate "http://www.commotec.com.tw/product/list.aspx?id=2834&brand=AUK"
Do Until .ReadyState = 4
DoEvents
Loop
s = 0
For p = 1 To 6 '共有六頁
.Navigate "javascript:__doPostBack('_ctl0$MainPlaceHolder$AspNetPager','" & p & "')" '轉跳至指定頁面
Do Until .ReadyState = 4
DoEvents
Loop
' Stop
Set hTable = .Document.getElementsByTagName("table")(5) '第五個table
With ActiveSheet
For i = 2 To hTable.Rows.Length - 1 '前二個是標題與空白跳過
For j = 0 To hTable.Rows(i).Cells.Length - 1
.Cells(s + i - 1, j + 1) = hTable.Rows(i).Cells(j).innerText
Next
Next
End With
s = s + 20
Next
.Quit
MsgBox "OK"
End With
End Sub
複製代碼
作者:
97forum
時間:
2015-8-17 08:51
回復
2#
joey0415
首先感謝 joey0415先進前輩的解決之道,確實可行。
但是愚笨的我對您所說的這段話不解?
" 若有需行請設定引用項目 microsoft internet controls "
另外如果要針對每個不同品項,就必需手動改程式碼(品項名稱),且會因每個品項頁數不同改程式碼,是如此對嗎?
作者:
joey0415
時間:
2015-8-17 09:57
回復
3#
97forum
如果可以執行就不要管引用項目
http://www.commotec.com.tw/product/list.aspx?id=2834&brand=AUK
是你找出來的網頁
如果換成別的品項時,它的網頁就不同
你只要改成你要的網頁,與該網頁的頁碼總數下去跑
理論上應該會執行出結果
作者:
97forum
時間:
2015-8-17 15:02
回復
4#
joey0415
謝謝您,我了解了。感謝您用心地分享。
作者:
97forum
時間:
2015-8-18 11:20
回復
4#
joey0415
我依照先進的程式碼修改成這個網址 http://www.commotec.com.tw/search/default.aspx?xid=2834&no=&id=0 ,頁數也改成應有的頁數,但是在第10頁或者是第11頁就卡住了,不知其原因為何?但是程式仍然是在執行中。不知是否可以幫忙解惑!
作者:
joey0415
時間:
2015-8-18 14:06
回復
6#
97forum
你給的網址打不開
加上你更改網址位置,不再是我之前寫的頁面,就算打得開也不見得有用
作者:
97forum
時間:
2015-8-19 11:39
回復
7#
joey0415
1. 網址是可以開啟,因為要撈資料庫4451筆資料可能會久一些,其出現的網頁形式沒甚麼變動,只是在撈取資料進excel時,換到第10頁、第11頁時就會卡住不動了。
2. 想請問先進,您當時程式碼中擷取之Table是如何去計算抓取第五資料表?
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)