作者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
1F:推 ilsc:大感谢!! 这几天我在试试看把它转换成2005的版本看看@@ 04/01 10:22
2F:推 ilsc:如果有不懂的地方 我会再发问 希望大大能继续协助我 >_< 04/01 10:25
3F:→ Y78:转换成VB2005 差别大概就是在抓取网页的地方而已 04/01 23:02