Re: [.NET] 想寫即時新聞跑馬燈 該如何使用??

看板Visual_Basic作者 (Y78)時間15年前 (2009/03/31 18:35), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串3/3 (看更多)
我用VB6寫了一個 抓取網頁的部份是用Inet 讀取xml的部份是自己用一堆字串的函式弄出來的 因為我不知道xml可以用哪些元件去解析 所以就自己動手寫了 流程就是 抓取網頁 -> 把網頁存檔 -> 讀取檔案 -> 開始抓取字串 -> 輸出 抓取網頁的程式碼是之前從網路上看來的 是把原始碼寫入檔案的方法 所以我就把網頁寫入一個1.txt 然後再讀進來 讀進來的部分因為直接讀會亂碼 編碼要採用utf-8 所以就Google到了一篇 http://0rz.tw/EifAi 就直接把裡面的程式碼複製貼上了 程式執行出來的結果是這樣 http://0rz.tw/Wb4Ks 你可以選擇去看我貼在網路上的程式碼 http://0rz.tw/a3zC3 或是我貼在下面的 不過我比較建議用上面的連結看就是了 程式碼如下: Function GetHtml(ByVal str As String) As String If Dir(App.Path & "\1.txt") <> "" Then Kill App.Path & "\1.txt" End If Dim b() As Byte Dim str2 As String '取消所有動作 Form1.Inet1.Cancel '設定通訊協定為 HTTP Form1.Inet1.Protocol = icHTTP '設定 URL 屬性 Form1.Inet1.URL = str '將讀取的 HTML 資料放進一個 byte array. b() = Form1.Inet1.OpenURL(, icByteArray) '建立一個暫存檔來存放抓回來的 html 檔 Open App.Path & "\1.txt" For Binary Access Write As #1 Put #1, , b() Close #1 End Function Private Sub Command1_Click() Call GetHtml("http://www.libertytimes.com.tw/rss/sp.xml") Dim objStream As Object Set objStream = CreateObject("ADODB.Stream") Dim str As String With objStream .Type = 2 .Mode = 3 .Open .Charset = "UTF-8" ' 或其他編碼 .LoadFromFile App.Path & "\1.txt" End With str = objStream.readtext ' str=網頁的原始碼 str = Right(str, Len(str) - 450) '把前面那自由時報的標題之類的去掉 Dim TitleStart As Long '標題字串開始的地方 Dim TitleEnd As Long '結束的地方 Dim LinkStart As Long Dim LinkEnd As Long Dim DateStart As Long Dim DateEnd As Long Dim Title As String ' 標題 Dim Links As String ' 連結 Dim Dates As String '日期 TitleStart = 0 TitleEnd = 0 LinkStart = 0 LinkEnd = 0 DateStart = 0 DateEnd = 1 While InStr(DateEnd + 1, str, "</pubDate>") <> 0 '外圍加個迴圈 '抓取標題開始 TitleStart = InStr(TitleStart + 1, str, "<title>") TitleEnd = InStr(TitleEnd + 1, str, "</title>") Title = Mid(str, TitleStart + 7, TitleEnd - TitleStart - 7) '擷取<"title">到<"/title">之間的字串 '抓取標題結束 '抓取連結開始 LinkStart = InStr(LinkStart + 1, str, "<link>") LinkEnd = InStr(LinkEnd + 1, str, "</link>") Links = Mid(str, LinkStart + 6, LinkEnd - LinkStart - 6) '抓取連結結束 '抓取日期開始 DateStart = InStr(DateStart + 1, str, "<pubDate>") DateEnd = InStr(DateEnd + 1, str, "</pubDate>") Dates = Mid(str, DateStart + 9, DateEnd - DateStart - 9) '抓取日期結束 Text1.Text = Text1.Text & "標題:" & Title & " ,連結:" & Links & " ,日期:" & Dates & vbCrLf Wend End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.162.46

04/01 10:22, , 1F
大感謝!! 這幾天我在試試看把它轉換成2005的版本看看@@
04/01 10:22, 1F

04/01 10:25, , 2F
如果有不懂的地方 我會再發問 希望大大能繼續協助我 >_<
04/01 10:25, 2F

04/01 23:02, , 3F
轉換成VB2005 差別大概就是在抓取網頁的地方而已
04/01 23:02, 3F
文章代碼(AID): #19qV8Fua (Visual_Basic)
文章代碼(AID): #19qV8Fua (Visual_Basic)