iT邦幫忙

0

請教EXCEL VBA是否可以檢查網址有效性?

  • 分享至 

  • xImage

因工作需求常要檢查大量網址是否可以正常開啟,或是網站已移除,目前網址都固定放在工作表的A欄位,請教VBA大神2個問題,謝謝
1、透過EXCEL VBA是否可以做到批次檢查網址有效性
2、若可以正常開啟網址,是否可以確認特定關鍵字,例如"日誌更新"

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2022-12-16 10:07:34 檢舉
網址有效性要用VBA檢查是可以的。
https://zys-notes.blogspot.com/2019/12/excel-vba-http-getpost.html

但因為都是同步程式,等他出結果應該會很久,還是建議用其他程式語言讀取xlsx然後做爬蟲處理。
blanksoul12 iT邦研究生 5 級 ‧ 2022-12-16 10:26:26 檢舉
可以,但你要因應不同情況調整程式,你可能會遇到情況如下
1. 正常連結,找你想找的東西
2. 正常連結,但該網頁有些東西變了,想找的東西不在原本的地方
3. 正常連結,但網頁被搬移了
4. 不能連結
以上我想到的你也要特定寫對應的東西.
blanksoul12 iT邦研究生 5 級 ‧ 2022-12-16 10:27:21 檢舉
反正你有例子,不如給出幾個不同情況的來試試
blanksoul12 iT邦研究生 5 級 ‧ 2022-12-16 10:28:54 檢舉
投資不一定有回報,但投中了便減省很多很時間,都是命運
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2022-12-16 10:48:13
最佳解答

檢查網址有效性可以拿這個去改
看是要回傳 True/False 或什麼的

Public Function CheckURL(url As String)
    Dim request As Object
    Set request = CreateObject("WinHttp.WinHttpRequest.5.1")
    On Error GoTo haveError
    With request
        .Open "HEAD", url
        .Send
        CheckURL = .Status
    End With
    Exit Function
haveError:
    CheckURL = Err.Description
End Function

資料來源

爬蟲就另請高明了

看更多先前的回應...收起先前的回應...
r80073 iT邦新手 5 級 ‧ 2022-12-16 10:59:06 檢舉

謝謝海綿寶寶大神,測試一般網址可以使用,若是短網址會回應操作逾時,但實際網址功能正常,請教這部分有解嗎?

短網址會回應操作逾時

可能是該家短網址伺服器不鳥 HTTP HEAD 協定
看是要
1.換成實際網址
2.或者針對短網址做特別處理(eg.用前面提到的 HTTP GET)

aaron3399 iT邦好手 1 級 ‧ 2022-12-16 13:24:28 檢舉

謝謝海綿寶寶大神,測試一般網址可以使用,若是短網址會回應操作逾時,但實際網址功能正常,請教這部分有解嗎?

補充一下,紀錄網站連結資訊不建議用短網址,因為你不知道短網址甚麼時候會失效
如果幾個月後短網址才失效,那你就又多了更正網址的工作了

r80073 iT邦新手 5 級 ‧ 2022-12-16 16:43:48 檢舉

了解,謝謝海綿寶寶大神^^

我要發表回答

立即登入回答