返回列表 上一主題 發帖

[發問] 如何寫excel VBA去抓取網頁原始碼內的特定文字

[發問] 如何寫excel VBA去抓取網頁原始碼內的特定文字

小弟正在用excel整理英文單字的發音資料, 需要手動輸入一個單字到英文單字網頁 http://dictionary.reference.com/,搜尋之後再開啟該網頁的原始碼內容,去尋找.MP3檔的語音編號後,依序複製貼回excel的mp3語音編號欄位的儲存格,若是想要寫一個VBA程式,自動讀出單字欄位下的所有單字,貼回原始檔內的mp3編號,(如貼圖說明),代替用手動一個一個抓取英文字典網站的原始碼內的MP3編號,不知該如何寫?
有請高手們指點!單字表格如以下貼圖.
[attach]14281[/attach]
get srccode character.rar (7.84 KB)
Learning is fun .
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

不好意思,看不到貼圖,再貼一次
get srccode text.JPG
2013-3-1 17:35
Learning is fun .
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

回復 2# daniel1326
  1. Option Explicit
  2. Function Mp3(Word As String) As String
  3.     Dim Url As String, Ar
  4.     Url = "http://dictionary.reference.com/browse/" & Word & "?s=b"
  5.     If Word = "" Then Mp3 = "??": Exit Function
  6.     With CreateObject("Microsoft.XMLHTTP")
  7.         .Open "get", Url, False
  8.        .send     
  9.         Ar = Split(Split(UCase(.responseText), ".MP3")(1), "/")
  10.         Mp3 = Ar(UBound(Ar))
  11.    End With
  12. End Function
複製代碼
EX1.GIF
2013-3-2 08:49
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

回復 3# GBKEE

超級版主大大,我用你的方法試了一個禮拜,但還是抓不到 view-source:https://finance.yahoo.com/quote/AAPL?p=AAPL 中的 CrumbStore":{"crumb":"9ZYeo7D3CrT"}  紅色字會不定時變,所以我想用VBA去自動抓它, 但一直失敗,好奇怪喔∼

匡藍色的地方

螢幕快照 2017-09-10 下午8.06.23.png
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

"CrumbStore":{"crumb":" 我有定義出CrumbStart,但好像是原始碼太多,以至於無法塞進 Dim String 大小而搜尋不到我要定義的CrumbStart ?
  CrumbStart = Chr(34) & "CrumbStore" & Chr(34) & ":{" & Chr(34) & "crumb" & Chr(34) & ":" & Chr(34)
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

回復 5# ui123
請說明:抓這網頁哪裡的資料
  1. Option Explicit
  2. 'Sub Ex()
  3.     Dim Url As String, AR
  4.     Url = "https://finance.yahoo.com/quote/AAPL?p=AAPL"
  5.     With CreateObject("Microsoft.XMLHTTP")
  6.         .Open "get", Url, False
  7.        .send
  8.         If InStr(.responseText, "CrumbStore"":{""crumb"":""") = False Then MsgBox "找不到啊"
  9.         
  10.    End With
  11. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

回復 6# GBKEE

超級版大,我想抓的是紅框部分,那一個每隔一段時間就會改變,
而網頁原始碼 CrumbStore":{"crumb":" 只會出現一次,所以我用這去定位

    javascript:;

想抓紅框部分

Crumb.PNG
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

回復 6# GBKEE

很奇怪的是,網頁原始檔明明有"CrumbStore":{"crumb":"  ,但是用程式InStr(.responseText, "CrumbStore"":{""crumb"":""") 卻搜尋不到,
想說是網頁原始檔太大所以.responseText 放不下,又或者是其他問題
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

回復 6# GBKEE
大大,我試了很久不行(下面語法是 Java 語言,不知道有沒有關),如果真不行就算了∼
謝囉∼
請詳閱 論壇版規愛惜帳號,一起創造美好的學習討論空間。

TOP

回復 9# ui123
Java 語言尚未入門,幫不上忙
只抓到100筆資料
  1. Sub Ex()
  2.     Dim oXmlhttp As Object, oHtmldoc As Object, surl, r, c, E
  3.     Set oXmlhttp = CreateObject("msxml2.xmlhttp")
  4.     Set oHtmldoc = CreateObject("htmlfile")
  5.     surl = "https://finance.yahoo.com/quote/AAPL/history?period1=1473638400&period2=1505174400&interval=1d&filter=history&frequency=1d"
  6.     With oXmlhttp
  7.         .Open "Get", surl, False
  8.         .Send
  9.         oHtmldoc.write .responseText
  10.     End With
  11.      With oHtmldoc
  12.         Set E = .all.tags("table")(3)
  13.         ActiveSheet.Cells.Clear
  14.         For r = 0 To E.Rows.Length - 1
  15.             For c = 0 To E.Rows(r).Cells.Length - 1
  16.                 Cells(r + 1, c + 1) = E.Rows(r).Cells(c).innertext
  17.             Next
  18.         Next
  19.     End With
  20.     Set oXmlhttp = Nothing
  21.     Set oHtmldoc = Nothing
  22. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題