您可以使用正則表達式來從你CuboPlayer1
DIV的innerHTML解析出URL。 爲什麼父母的div而不是封面本身?由於HtmlAgilityPack存在問題,無法解析Attributes["style"].Value
中的引號,因此您需要轉到父節點CuboPlayer1
並手動從整個HTML中提取URL。
你可以做到這一點與此代碼:
string nodeHTML = resultat.DocumentNode
.SelectSingleNode("//div[@id='CuboPlayer1']").InnerHtml;
string pattern = @"(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\/\\\+&%\$#_]*)?";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
string backgroundURL = regex.Match(nodeHTML).Value;
我測試了這個使用下面的代碼和它的工作原理:
using System;
using System.Text.RegularExpressions;
using System.Xml;
using HtmlAgilityPack;
public class Program
{
public static void Main()
{
var html =
"<div id=\"CuboPlayer1\"><div class=\"cover\" style=\"background-image: url(\"http://is5.mzstatic.com/image/thumb/Music/v4/68/b5/08/68b50896-607e-2950-3530-de172fdbf878/source/100x100bb.jpg\");\"></div></div>";
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
string nodeHTML = htmlDoc.DocumentNode
.SelectSingleNode("//div[@id='CuboPlayer1']").InnerHtml;
string pattern = @"(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\/\\\+&%\$#_]*)?";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
string backgroundURL = regex.Match(nodeHTML).Value;
Console.WriteLine(backgroundURL);
}
}
編輯: 沒有與你想要什麼樣的問題實現,因爲背景圖像不斷變化。根據文檔加載時屏幕上顯示的內容,您可能無法獲取任何URL,因爲沒有顯示封面。
在任何情況下,直接在你與使用網址,而不是靜態HTML的像我的第一個例子中的工作頁面指向這裏的更新代碼:
var url = "http://www.antena1.com.br/stream/player";
var web = new HtmlWeb();
var htmlDoc = web.Load(url);
// Convert each line of HTML into a list of strings
List<string> nodeHTML = htmlDoc.DocumentNode
.SelectSingleNode("//div[@id='CuboPlayer1']").InnerHtml.Split('\n').ToList();
// Find div with "cover" attribute
string coverHTML = nodeHTML.Where(n => n.Contains("<div class=\"cover\"")).FirstOrDefault();
// Define regular expression to match
string pattern = @"(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\/\\\+&%\$#_]*)?";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
// Extract backgroundURL
string backgroundURL = regex.Match(coverHTML).Value;
哪裏是'CuboPlayer1'在上面的'DIV '元素?它是父母嗎? – SomeDude
我需要的是在CuboPlayer1 div內。 – Toni0123