Board logo

標題: [發問] VBA 上網的回應問題以及VBA 操控網頁的初學方式 [打印本頁]

作者: PKKO    時間: 2016-2-18 12:27     標題: VBA 上網的回應問題以及VBA 操控網頁的初學方式

本帖最後由 GBKEE 於 2016-2-19 08:46 編輯

上網有查詢到網頁的相關資訊,同時也看了本版的資訊得知以下訊息可以偵測出是否還在運作中
  1. While .busy Or .readyState <> 4
  2. Application.Wait (Now + TimeValue("0:00:01"))'DoEvents有時會還沒轉完就繼續執行了(可能差0.0幾秒)
  3. Wend
複製代碼
現在遇到的問題是:程式開啟網頁後,並非用網頁元素進行操作,而是用滑鼠點擊的方式來控制
在這種情況下,上述的程式碼無法偵測該網頁是否在運作中,請問用滑鼠點擊的方式來控制網頁,有辦法偵測出是否還在運作中呢?

我目前只有想到一個方式是,滑鼠點擊之後,再利用.Refresh,讓網頁重新更新,此時上述的程式碼就能發揮功用得知是否還在運作中

為何要得知網頁是否還在運作?因為網頁運作完畢之後還有後續的動作,若不能得知是否運作完畢,只能固定用秒數(但有連線速度的問題)可能會導致錯誤

以及各位大大是否可以推薦一下,學習利用VBA上網操控網頁的初學方式
例如下方程式碼:(可以自動上網GOOGLE並輸入關鍵字,然後自動查詢)
  1. With CreateObject("InternetExplorer.application")
  2. .Visible = True
  3. .navigate ("http://www.google.com/")
  4. While .busy Or .readyState <> 4
  5. Application.Wait (Now + TimeValue("0:00:01"))
  6. Wend

  7. .document.all.q.Value = "keyword"
  8. While .busy Or .readyState <> 4
  9. Application.Wait (Now + TimeValue("0:00:01"))
  10. Wend
  11. .document.all.btnG.Click
  12. While .busy Or .readyState <> 4
  13. Application.Wait (Now + TimeValue("0:00:01"))
  14. Wend
複製代碼
以上的功能都是上網查詢來的,可是在其他的網站要如何找到以下這兩個元素,該如何開始學習呢?
.document.all.q.Value =>輸入查詢的關鍵字(不曉得該如何找到這個元素)
.document.all.btnG.Click=>查詢的按鈕(不曉得該如何找到這個元素)

還是有大大推薦如何開始學習網頁元素呢?
作者: GBKEE    時間: 2016-2-18 13:18

本帖最後由 GBKEE 於 2016-2-18 13:24 編輯

回復 1# PKKO
請問有辦法偵測出是否還在運作中呢?

端看網頁的內容而異 http://forum.twbts.com/thread-16257-1-1.html

   
.document.all.q.Value =>輸入查詢的關鍵字(不曉得該如何找到這個元素)
.document.all.btnG.Click=>查詢的按鈕(不曉得該如何找到這個元素)

http://forum.twbts.com/thread-13669-1-1.html
元素有Name(???) 就可套到 .document.all.???
作者: PKKO    時間: 2016-2-18 17:20

回復 2# GBKEE
感謝超版大大,已經實際應用了您的網頁元素的程式碼

有以下收穫
一、原來不需要看網頁原始碼就可以得到網頁元素,之前看了好久,都只能瞎猜到一些
二、使用該程式碼之後即可了解網頁元素的基本架構,原來如此省事,真的太感謝超版大大

但仍有一些問題想詢問超版大大
一、我目前只知道可以查詢.GetElementsByTagName("INPUT")、.GetElementsByTagName("SELECT")、.GetElementsByTagName("BUTTON")
        我要如何得知所有、.GetElementsByTagName 的元素有哪些可以查詢?
二、我目前查詢到有些元素並沒有提供NAME的部分,那要如何控制該網頁呢(還有其他方法嗎)?
三、有些網頁有不同分頁(類似USERFORM的PAGE1,PAGE2這樣),這種切換分頁的元素要如何找到呢?
作者: GBKEE    時間: 2016-2-19 08:43

本帖最後由 GBKEE 於 2016-2-19 08:45 編輯

回復 3# PKKO
http://forum.twbts.com/tag.php?name=網頁元素
相關的問題 在 [大盤歷史資料查詢]
作者: PKKO    時間: 2016-2-19 13:10

回復 4# GBKEE
感謝超版大大,已經會使用,當沒有NAME的時候要如何操作該元素
  1. For Each E In .GetElementsByTagName("BUTTON")
  2.                 If E.Type = "submit" And E.innertext = "登錄" Then
  3.                     E.Click
  4.                     Exit For
  5.                 End If
  6.             Next
複製代碼
可以使用上述的程式碼,判定TYPE或是任意的屬性為指定名稱時
則E.CLICK 或是 E.VALUE=xx
已經實驗過上述兩種都可行
感謝超版大大,繼續實驗其他分頁或是表單的部分
非常感謝!
作者: PKKO    時間: 2016-2-19 15:30

回復 4# GBKEE

抱歉,還想請問一下
除了控制網頁元素之外
例如:http://tw.dictionary.search.yahoo.com/search?p=true&tab=definition&fr2=dict
這個yahoo奇摩的翻譯
要如何將下方的翻譯資料下載回來至excel分頁內呢?




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