首页 > 解决方案 > 从 URL 获取 HTML 元素值

问题描述

如何在 c# 中获取 XHtml 代码?

我正在加载网页myweb.Source = new Uri(@"https://" + @urlstring.Text);

我将 html 保存在字符串中

WebClient a = new WebClient();
byte[] data = a.DownloadData(myweb.Source.ToString());
string ab = Encoding.ASCII.GetString(data);

现在我正在寻找视频网址路径

string id = "";
int index = ab.IndexOf("<video")
int indexe = ab.IndexOf("</video>");
for (int i = index; i <= indexe + 100; i++)
   {
       id += ab[i];
   }

结果是

<video class="js-select-menu-off vjs-video"
                data-account="3695997568001"
                data-player="SyDW1dJDG"
                data-embed="default"
                data-video-id=""
                controls></video>
<div class="playback-speed-popover popover dark">
    <div class="inner-popover">

但我想要的是这个:

<video class="vjs-tech" data-account="3695997568001" 
data-player="SyDW1dJDG" data-embed="default" 
data-video-id="" id="vjs_video_3_html5_api"
poster="blablabla" src="https://hous......"></video>

如何从网页获取 src?

标签: c#htmluwpwebbrowser-control

解决方案


我在 Visual Studio Code 的示例中使用 .NET Core。使用以下方式安装 HtmlAgilityPack:

dotnet add package HtmlAgilityPack --version 1.11.16

下面的代码是我将如何解决它:

    static void Main(string[] args)
    {            
        var client = new System.Net.Http.HttpClient();
        var content = client.GetStringAsync(@"https://www.w3schools.com/html/html5_video.asp").Result;
        HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
        document.LoadHtml(content);            
        var  videos = document.DocumentNode.Descendants("video").FirstOrDefault().Attributes["src"].Value;            
    }

推荐阅读