偶然需要把大量的網址個別的網頁標題儲存起來,但 10個以內自己複製都還好,需要更大量就很累了。這時候發現可以用 Excel來完成!
準備工具:Excel、你的網址(https和 http分開)
如果你只是要先嘗試,你可以先使用下面的範例網址,這是我從 UDN聯合新聞網上面隨便抓的網址
https://udn.com/news/cate/6638
https://udn.com/news/cate/6639
https://udn.com/news/cate/6641
https://udn.com/news/cate/6640
https://udn.com/news/cate/7225
https://udn.com/news/cate/6643
https://udn.com/news/cate/6644
https://udn.com/news/cate/6645
https://udn.com/news/cate/7227
https://udn.com/news/cate/7226
https://udn.com/news/cate/6649
用 Excel批次取得網址 URL的網頁標題(title)步驟
1. 開啟 Excel工作表,將網址貼在 A1~A11的地方
2. 點選上方標籤的「開發人員」
如果你沒有開發人員,請按檔案 > 選項 > 自訂功能區 > 右邊的欄位把「開發人員」打勾 > 確定
3. 點選「Visual Basic」
4. 在開啟的 Visual Basic視窗中,左邊的欄位點兩下「工作表1」,此時中間會開啟一個輸入指令碼的視窗
5. 複製以下的指令碼,貼進去
Sub GetTitles()
Dim c As Range, url As String
For Each c In Range("A1:A11").Cells
url = Trim(c.Value)
If LCase(url) Like "https://*" Then
c.Offset(0, 1).Value = GetTitle(url)
End If
Next c
End SubFunction GetTitle(sURL As String)
Dim title As String, res As String, pos1, pos2
Dim objHttp As Object
Set objHttp = CreateObject("MSXML2.ServerXMLHTTP")
objHttp.Open "GET", sURL, False
objHttp.Send ""res = objHttp.ResponseText
pos1 = InStr(1, UCase(res), "<TITLE>")
pos2 = InStr(1, UCase(res), "</TITLE>")title = "<not found>"
If pos1 > 0 And pos2 > 0 Then
pos1 = pos1 + Len("<TITLE>")
title = Mid(res, pos1, pos2 - pos1)
End If
GetTitle = title
End Function
ps. 如果你貼上語法時發生 title = Mid這行錯誤,請把 pos2 - pos1 這裡的「-」改為半形。
6. 按一下工具列上的綠色「‣」執行,執行
7. 此時 B行就會開始填入這些網址的標題囉!如果你的網址數量很多,請等等 Excel完成工作。
這就是透過 Excel來大量自動化取得網址標題的方法啦!
指令碼備註
A1:A11 上面紅色的指令碼,這裡是指你的網址填在哪幾個欄位,如果你有 20個網址那就是 A1:A20
https://* 上面藍色的指令碼,如果你的網址不是 https開頭,請把 s拿掉變成 http://*
存檔備註
當你存檔的時候,會發現 Excel提示有巨集,需要另外儲存才能保存巨集的內容,因此檔案類型要選擇 Excel啟用巨集的活頁簿;如果你只是偶爾暫時使用,可以把指令碼儲存起來就好,不必儲存這個活頁簿。也提醒,從網路上隨意下載的 Excel檔案如果提示有巨集,要特別注意掃描檔案安全性,因為來路不明的 Excel可能會有惡意的巨集指令碼!
您好,我嘗試上方的程式碼
會出現語法錯誤的訊息。
在title = Mid(res, pos1, pos2 – pos1)這一行
謝謝你告訴我,我找到問題了,請把 – 換成半形的-
請問什麼情況下會出現
我輸入的網址取出的標題都是
都是什麼呢...
not found
你好 我測試過 自由時報的網址可以用
但xx網站是顯示 The URL you requested has been blocked
請問要怎麼改才能抓啊?
謝謝
不太確定xx網站是什麼,但根據這個訊息是你的網址是被封鎖的,很可能是伺服器拒絕了你的請求
如果瀏覽器可以瀏覽,但是無法透過這個方式取得
那麼減少一次取得的數量後再試試看
xx網站是讀冊網路書店
可是我測試的時候只放三個網址耶
博客來 金石堂 誠品 標題都可以抓
然後比價網站也有它的資料
請問要怎麼改才行啊?
這是海賊王105集的網址
https://www.taaze.tw/products/11101006724.html
請問可以幫我測試一下嗎?
非常感謝大大回覆我的問題
稍加修改一下,在【Dim objHttp As Object】以下的三行修改為這行下面加上
Set objHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
objHttp.Open "GET", sURL, False
objHttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.58"
objHttp.Send ""
就可以囉。
成功了 祝大大51連假快樂~
請問網址要放在B1,標題要顯示在A1該如何修改?
另外標題有固定的頭尾,如標題是 AAA123123BBB,
該如何刪掉頭尾的 AAA、BBB呢?
謝謝
比較簡單一點是用 MID 這個函數來處理喔