標題:
[發問]
如何寫excel VBA去抓取網頁原始碼內的特定文字
[打印本頁]
作者:
daniel1326
時間:
2013-3-1 17:29
標題:
如何寫excel VBA去抓取網頁原始碼內的特定文字
小弟正在用excel整理英文單字的發音資料, 需要手動輸入一個單字到英文單字網頁 http://dictionary.reference.com/,搜尋之後再開啟該網頁的原始碼內容,去尋找.MP3檔的語音編號後,依序複製貼回excel的mp3語音編號欄位的儲存格,若是想要寫一個VBA程式,自動讀出單字欄位下的所有單字,貼回原始檔內的mp3編號,(如貼圖說明),代替用手動一個一個抓取英文字典網站的原始碼內的MP3編號,不知該如何寫?
有請高手們指點!單字表格如以下貼圖.
[attach]14281[/attach]
[attach]14283[/attach]
作者:
daniel1326
時間:
2013-3-1 17:35
不好意思,看不到貼圖,再貼一次[attach]14284[/attach]
作者:
GBKEE
時間:
2013-3-2 08:49
回復
2#
daniel1326
Option Explicit
Function Mp3(Word As String) As String
Dim Url As String, Ar
Url = "http://dictionary.reference.com/browse/" & Word & "?s=b"
If Word = "" Then Mp3 = "??": Exit Function
With CreateObject("Microsoft.XMLHTTP")
.Open "get", Url, False
.send
Ar = Split(Split(UCase(.responseText), ".MP3")(1), "/")
Mp3 = Ar(UBound(Ar))
End With
End Function
複製代碼
[attach]14285[/attach]
作者:
ui123
時間:
2017-9-10 20:15
回復
3#
GBKEE
超級版主大大,我用你的方法試了一個禮拜,但還是抓不到 view-source:https://finance.yahoo.com/quote/AAPL?p=AAPL 中的 CrumbStore":{"crumb":"
9ZYeo7D3CrT
"} 紅色字會不定時變,所以我想用VBA去自動抓它, 但一直失敗,好奇怪喔∼
作者:
ui123
時間:
2017-9-11 06:38
"CrumbStore":{"crumb":" 我有定義出CrumbStart,但好像是原始碼太多,以至於無法塞進 Dim String 大小而搜尋不到我要定義的CrumbStart ?
CrumbStart = Chr(34) & "CrumbStore" & Chr(34) & ":{" & Chr(34) & "crumb" & Chr(34) & ":" & Chr(34)
作者:
GBKEE
時間:
2017-9-11 08:35
回復
5#
ui123
請說明:抓這網頁哪裡的資料
Option Explicit
'Sub Ex()
Dim Url As String, AR
Url = "https://finance.yahoo.com/quote/AAPL?p=AAPL"
With CreateObject("Microsoft.XMLHTTP")
.Open "get", Url, False
.send
If InStr(.responseText, "CrumbStore"":{""crumb"":""") = False Then MsgBox "找不到啊"
End With
End Sub
複製代碼
作者:
ui123
時間:
2017-9-11 10:28
回復
6#
GBKEE
超級版大,我想抓的是紅框部分,那一個每隔一段時間就會改變,
而網頁原始碼 CrumbStore":{"crumb":" 只會出現一次,所以我用這去定位
javascript:;
作者:
ui123
時間:
2017-9-11 10:38
回復
6#
GBKEE
很奇怪的是,網頁原始檔明明有"CrumbStore":{"crumb":" ,但是用程式InStr(.responseText, "CrumbStore"":{""crumb"":""") 卻搜尋不到,
想說是網頁原始檔太大所以.responseText 放不下,又或者是其他問題
作者:
ui123
時間:
2017-9-11 17:32
回復
6#
GBKEE
大大,我試了很久不行(下面語法是 Java 語言,不知道有沒有關),如果真不行就算了∼
謝囉∼
作者:
GBKEE
時間:
2017-9-13 08:36
回復
9#
ui123
Java 語言尚未入門,幫不上忙
只抓到100筆資料
Sub Ex()
Dim oXmlhttp As Object, oHtmldoc As Object, surl, r, c, E
Set oXmlhttp = CreateObject("msxml2.xmlhttp")
Set oHtmldoc = CreateObject("htmlfile")
surl = "https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2=1505174400&interval=1d&filter=history&frequency=1d"
With oXmlhttp
.Open "Get", surl, False
.Send
oHtmldoc.write .responseText
End With
With oHtmldoc
Set E = .all.tags("table")(3)
ActiveSheet.Cells.Clear
For r = 0 To E.Rows.Length - 1
For c = 0 To E.Rows(r).Cells.Length - 1
Cells(r + 1, c + 1) = E.Rows(r).Cells(c).innertext
Next
Next
End With
Set oXmlhttp = Nothing
Set oHtmldoc = Nothing
End Sub
複製代碼
作者:
ui123
時間:
2017-9-13 12:24
回復
10#
GBKEE
GBKEE大大,感恩~
我也是只抓到100筆就抓不了了,目前還在想兩種(link or download csv)辦法如何解
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)