XPath获取youtube视频c#

本文关键字:视频 youtube 获取 XPath | 更新日期: 2023-09-27 18:22:35

代码有效,但我无法获得页面的确切链接,这样我就不会返回任何内容,它会返回一个异常,因为路径找不到任何内容。页面如下,我需要得到视频,这个路径在";选择SingleNode";。

请帮助我构建正确的XPath,以便从youtube获取视频链接。

我的源代码:

private void DownloadCompleted(object sender, HtmlDocumentLoadCompleted e)
    {
      var data = e.Document.DocumentNode.SelectSingleNode("//html/head/link")
           .Attributes["href"].Value.ToString();
           MessageBox.Show(data);
           Uri obj = new Uri(data);
           Web.Source = obj;
           Web.Visibility = Visibility.Visible;
    }

如果单击";检查元件";在这个页面上,你会发现我在";选择SingleNode";。我刚离开那里,这样你就可以找到链接并帮助我,但那个字符串不正确。

此代码获取另一个链接。我需要得到youtube视频的真实链接。我尝试了这个XPath字符串,但现在可以工作了:"//html/body/div/iframe/html/head"

XPath获取youtube视频c#

HEAD中有多个子LINK元素。您需要通过识别您想要的,类似于以下内容:e.Document.DocumentNode.SelectSingleNode("//html/head/link[@id='someId']")

//iframe[contains(@src, "youtube")]//link[@rel="canonical"]怎么样?

返回<link rel="canonical" href="http://www.youtube.com/watch?v=byp94CCWKSI"/>


根据方法签名,我猜您正在使用HtmlAgilityPack。。。其不检索IF帧的内容。您需要对IFrame:的内容发出单独的请求

var hwMainPage = new HtmlWeb();
var hdMainPage = hwMainPage.Load(@"http://www.unnu.com/jason-derulo/the-other-side");
var iframeUri = hdMainPage.DocumentNode
    .SelectSingleNode("//iframe[contains(@src, '"youtube'")]")
    .Attributes["src"].Value;
var hwIframe = new HtmlWeb();
var hdIframe = hwIframe.Load(iframeUri);
var videoCanonicalUri = hdIframe.DocumentNode
    .SelectSingleNode("//link[@rel='"canonical'"]")
    .Attributes["href"].Value;
// videoCanonicalUri == http://www.youtube.com/watch?v=byp94CCWKSI