作者Y78 (Y78)
看板Visual_Basic
標題Re: [.NET] 想寫即時新聞跑馬燈 該如何使用??
時間Tue Mar 31 18:35:58 2009
我用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
推 ilsc:大感謝!! 這幾天我在試試看把它轉換成2005的版本看看@@ 04/01 10:22
推 ilsc:如果有不懂的地方 我會再發問 希望大大能繼續協助我 >_< 04/01 10:25
→ Y78:轉換成VB2005 差別大概就是在抓取網頁的地方而已 04/01 23:02