Board logo

標題: 多網頁同時抓取問題請益? [打印本頁]

作者: joey0415    時間: 2013-8-1 18:55     標題: 多網頁同時抓取問題請益?

假設有相同的網頁,例如:http://stock.wearn.com/astock.asp?kind=2330

假設代碼從1101~3000

小弟想1000~2000開一個網頁抓
2001~3000開另一個網頁抓

上面的網站很快,只是舉例…
小弟只知道要設兩個類似Set IEa = CreateObject("InternetExplorer.Application"),Set IEb = CreateObject("InternetExplorer.Application"),可是代碼寫在同一個sub,還是會先後執行…

不知道有高手可以指點一下嗎?
這樣可以省下抓取的時間
  1. Sub vba打開網頁()
  2.     Dim IE As Object
  3.     Set IE = CreateObject("InternetExplorer.Application")
  4.        IE.Visible = True
  5.        IE.Navigate ("http://stock.wearn.com/astock.asp?kind=2330")

  6. 抓網頁…下面小弟會寫

  7. End Sub
複製代碼

作者: luhpro    時間: 2013-8-1 23:15

回復 1# joey0415
請參考這個 :
同時跑兩個程式!
作者: joey0415    時間: 2013-8-2 15:40

luhpro大的範例的確可行

不過小弟的程式都要上網頁抓資料,都有下面這行設定(會開啟ie),所以即使在doevents的設定下,也不能按下另一個按鈕

本來想說開兩個網頁抓,時間會省一半,不過還是不能按下去

不知有解嗎?
謝謝

Set xa = CreateObject("internetexplorer.application")

Set xb = CreateObject("internetexplorer.application")
作者: luhpro    時間: 2013-8-2 23:39

luhpro大的範例的確可行

不過小弟的程式都要上網頁抓資料,都有下面這行設定(會開啟ie),所以即使在doev ...
joey0415 發表於 2013-8-2 15:40

不能按是正常的啊,
在 Excel VBA 上,
doevents 只是把系統控制權暫時移交出去,
而在其把控制權取回前(也就是 doevents 執行期間) 該Excel VBA 是沒有(辦法)做任何動作的.
所以你要同時跑兩個網頁,
比較好的方式是將兩個網頁的操作動作交錯一下,
(A執行讀網頁,接著B處理已經讀取完成的網頁內容,回到A確認讀取網頁完成後,開始處理網頁內容,再來B開始讀取新的網頁資料...)以上迴圈
間或中間再加放一兩個 doevents 讓其他程式也可以處理自己的事情.
我想這樣應該才是你想要的功能.
作者: joey0415    時間: 2013-8-3 01:29

回復 4# luhpro

感謝大大的回應,我會試著同時多開幾個網頁,分散下載至不同sheet中,再分批讀取出來試試看

如果有機會再報告給大家知道




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)