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"
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