目前我正试图通过一个c程序从一个网站上读出一段文字。
准确地说是从www.hardbase.fm的曲目和DJ。
这就是页面源的外观:
<div id="Moderator">
<div id="Moderator_special">
<div style="width:158px; float:left; margin:8px"></div>
<div id="onAir" style="width:420px;overflow:hidden;">
<strong>
<a href="/member/46069" target="_top">
<span style="color:#4AA6E5">BIOCORE</span>
</a>
<span style="color:#26628B"> mit "This Is BIOCORE" (Hardstyle)</span>
</strong>
</div>
</div>
</div>
我想读的文本是“biocore”和“mit”这是biocore(hardstyle)
(运行代码片段时看到的文本)。
如果尝试过以下操作:
System.Net.WebClient wc = new System.Net.WebClient();
byte[] raw = wc.DownloadData("http://www.hardbase.fm/");
first = webData.IndexOf("#4AA6E5\">") + "#4AA6E5\">".Length;
last = webData.LastIndexOf("</span></a><span style=\"color:#26628B\">");
hb_dj = webData.Substring(first, last - first);
但这并不总是有效的,因为有时候页面的源代码会有一些变化。喜欢这个颜色。然后搜索就行不通了。
所以问题是:有没有更好的方法来做到这一点?
最佳答案
你应该试试HTML Agility Pack
HtmlWeb page = new HtmlWeb();
HtmlDocument document = page.Load("http://www.hardbase.fm/");
var nodes = document.DocumentNode.SelectNodes("//[@id='onAir']");
var nodes2 = nodes.Select(c1 => c1.SelectNodes("span")).ToList();
var span1=nodes2[0];
var span2 nodes2[1]