2011-04-28 132 views
2

我正在编写一个程序,它可以获取带有视频的网页的源代码。然后它使用正则表达式来隔离该视频的下载链接。那么它使用httpwebrequesthttpwebresponse下载视频。我的问题出现在某些网站有一个页面,您必须点击“继续”才能访问视频页面。如何使用VB.net获取html页面的源代码?

例如,有玩http://nextgenvidz.com/view/s995xvc9e2fv视频名为“The.Matrix.Reloaded.2003.mp4”所以我告诉我的程序,以获取链接“http://nextgenvidz.com/view/s995xvc9e2fv”的源代码,但它无法找到视频的下载链接,因为它在“继续”页面的源代码中搜索文件。如果您转到上面的网站并查看源代码,则不会看到链接。然后,点击继续,当视频出现时执行相同操作,您会注意到该文件仅存在于第二个文件中。

如何获取播放视频的页面的源代码,而不是必须单击的页面继续?

我想使用此代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim Loading As String = "Loading..." 
    TextBox1.Text = Loading 
    Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(TextBox2.Text) 
    Dim response As System.Net.HttpWebResponse = request.GetResponse() 

    Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream()) 

    Dim sourcecode As String = sr.ReadToEnd() 
    TextBox1.Text = sourcecode 
End Sub 

也许有一种方法可以自动选择“继续”按钮编程?

+1

我怀疑按钮有一些客户端的JavaScript,你将需要interperet。几乎好像作者不希望你这样做。 – Jodrell 2011-04-28 12:16:56

+0

以及我怎么会得到实际上有它的视频页面,而不是继续页面的HTML源代码? – daniel11 2011-04-28 12:32:13

+1

当你点击它时,你必须做按钮的操作,但是这可能会被服务器端元素混淆。我无法提供一个通用答案,我不想点击您当前位置的链接。 – Jodrell 2011-04-28 12:44:37

回答

0

我曾尝试在过去写过类似的东西,并发现存在一堆限制(无论是由浏览器还是由协议本身)以防止自动化。创建一个通用的网站解析器将是不可能的。您将不得不为每个站点编写解析例程,这取决于他们隐藏内容的方式。您首先必须确定这些网站中每个网站如何隐藏用户内容的模式,然后针对每种模式实施实际解析(模式既可以是视频目标,也可以是使用内容视频弹出另一个窗口的按钮,或者一个执行javascript动态加载视频到当前窗口的按钮)

+0

我可以使用webbrowse函数在自定义webbrowser中加载视频,然后一些如何获取当前加载页面的源代码并从那里去?这可能比使用url本身获得源代码更有效? – daniel11 2011-04-28 19:18:13

+0

我在谈论解析出源,而不是URL。你说在源视频中没有直接链接,但是有一个链接到另一个页面,你必须点击一个按钮才能加载视频。我怀疑你实际上是否需要任何种类的浏览器来阅读网页的来源。 string getPageSource(string URL) System.Net.WebClient webClient = new System.Net.WebClient(); string strSource = webClient.DownloadString(URL); webClient。处置(); return strSource; } – Dimitri 2011-04-28 23:46:37

+0

对不起格式化......或者说缺少它。总之,我的回应意味着:真的值得花费数小时来编写HTML源代码解析器来获取视频吗?让它完全自动化将是一件痛苦的事情。 – Dimitri 2011-04-28 23:47:03

0
Dim PictureURL As String = "http://www.bing.com" + New System.Net.WebClient().DownloadString("http://www.bing.com/HPImageArchive.aspx?format=rss&idx=0&n=1&mkt=de-DE").Replace("<link>", "|").Replace("</link>", "|").Split("|")(3)