国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET從優酷專輯中采集所有視頻及信息(VB.NET代碼)

2024-07-10 12:42:39
字體:
來源:轉載
供稿:網友
這個方法就是提取優酷的專輯ID,然后一個個ID進行循環采集網頁代碼,從中提取title標簽和VID,沒什么技術含量。=..=
采集中應用.NET中的HttpWebRequest和HttpWebResponse類,代碼分析用了正則表達式。
這個代碼效率不是很好,一個網頁的解析時間在0.5~2秒之間,不適合大量采集。也許將它轉換成JavaScript速度會快一點吧。
暫時就研究這么多,代碼直接發出來給大家共享一下。

代碼VB.NET,新建一個窗體frmMain,添加一個TextBox,一個ListBox,兩個Button,復制下面的代碼:

代碼如下:
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions
Public Class frmMain
Structure VList
Dim id As Integer
Dim title As String
Dim vid1 As String
Dim vid2 As String
Overloads Function ToString() As String
Return String.Format("{0}:<{1}> [{2}]", id, title, vid1)
End Function
End Structure
Dim myList As New List(Of VList)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 防止重復創建變量
Dim wr1 As HttpWebRequest
Dim wr2 As HttpWebResponse
Dim ret As String
Dim reg As Match
Dim g As Group
Dim preVid As String = "" '上一個VID
Dim nowid As Integer = 0 '當前的視頻集數
Dim listUrl As String = TextBox1.Text '獲取專輯URL,如 http://www.youku.com/playlist_show/id_2350764.html
Dim tarUrl As String = "http://v.youku.com/v_playlist/f{0}" '{0}ListID
reg = Regex.Match(listUrl, "playlist_show/id_(/d+).*/.html")
If Not reg.Success Then
MsgBox("專輯列表提取失??!")
Exit Sub
End If
g = reg.Groups(1)
tarUrl = String.Format(tarUrl, g.Value) & "o{1}p{0}.html" '{0}集數 {1}排序
wr1 = HttpWebRequest.Create(TextBox1.Text)
wr2 = wr1.GetResponse
ret = New StreamReader(wr2.GetResponseStream, Encoding.GetEncoding(wr2.CharacterSet)).ReadToEnd
reg = Regex.Match(ret, "<title>(.+) - 專輯 - 優酷視頻</title>")
If Not reg.Success Then
MsgBox("專輯名稱提取失??!")
Else
g = reg.Groups(1)
MsgBox("專輯名:《" & g.Value & "》")
End If
Do
' 從Web流中獲取頁面文本
wr1 = HttpWebRequest.Create(String.Format(tarUrl, nowid, "0")) '按倒序方式查找視頻
wr2 = wr1.GetResponse
ret = New StreamReader(wr2.GetResponseStream, Encoding.GetEncoding(wr2.CharacterSet)).ReadToEnd
'TextBox2.Text = ret
' 創建一個臨時視頻列表變量
Dim nlist As New VList
nlist.id = nowid '獲取ID
' 獲取videoId
reg = Regex.Match(ret, "var/s+videoId/s*=/s*""(/d+)""/s*;")
If Not reg.Success Then Exit Do
g = reg.Groups(1)
' 如果VID等于上一個VID最退出
If g.Value = preVid Then Exit Do
nlist.vid1 = g.Value
' 獲取videoId2
reg = Regex.Match(ret, "var/s+videoId2/s*=/s*""((/w|=)+)""/s*;") '"var/s+videoId2/s*=/s*""(/w+)""/s*;")
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 徐水县| 买车| 丹寨县| 沙田区| 视频| 巨野县| 德化县| 石阡县| 浑源县| 怀仁县| 长治县| 独山县| 海淀区| 玉树县| 定安县| 白城市| 岳普湖县| 泸西县| 长宁区| 全椒县| 孟连| 怀化市| 隆子县| 古蔺县| 苗栗市| 含山县| 阳曲县| 锡林浩特市| 高唐县| 鹰潭市| 淮滨县| 平罗县| 海原县| 曲阜市| 金秀| 竹溪县| 巨鹿县| 灵武市| 米林县| 宁远县| 青阳县|