我正在製作WPF中的mp3歌曲獲取器。它所做的是從網頁獲取所有結果。我遇到的問題是,它提取不相關的數據,如標籤,鏈接(不下載)等。我如何從HTML網頁獲取特定數據
我想要的只是獲取結果並從網頁下載鏈接並將其顯示在列表框中。
任何幫助將不勝感激!
從這個鏈接一樣:http://mp3skull.com/mp3/move_that_dope.html
我正在製作WPF中的mp3歌曲獲取器。它所做的是從網頁獲取所有結果。我遇到的問題是,它提取不相關的數據,如標籤,鏈接(不下載)等。我如何從HTML網頁獲取特定數據
我想要的只是獲取結果並從網頁下載鏈接並將其顯示在列表框中。
任何幫助將不勝感激!
從這個鏈接一樣:http://mp3skull.com/mp3/move_that_dope.html
用HtmlAgilityPack這樣做很簡單。您只需加載文檔,然後選擇您需要使用簡單的標籤XPath expressions:
using HtmlAgilityPack;
using System;
using System.Text;
namespace com.mp3skull.scrapper
{
class Program
{
private static void Main(string[] args)
{
var p = new Program();
HtmlNodeCollection songs = p.GetSongNodesFromPage("http://mp3skull.com/mp3/move_that_dope.html");
p.WriteSongsToConsole(songs);
Console.WriteLine("Press any key to continue..");
Console.ReadKey();
}
private readonly HtmlWeb web = new HtmlWeb();
private HtmlNodeCollection GetSongNodesFromPage(string pageUri)
{
HtmlDocument document = web.Load(pageUri);
HtmlNode documentNode = document.DocumentNode;
return documentNode.SelectNodes("//div[@id='song_html']");
}
private void WriteSongsToConsole(HtmlNodeCollection songs)
{
foreach (HtmlNode s in songs)
{
HtmlNode titleNode = s.SelectSingleNode(".//b"); // Title is bold
string title = titleNode.InnerText;
HtmlNode downloadLinkNode = s.SelectSingleNode(".//a[@style='color:green;']"); // Download links is green
string downloadLink = downloadLinkNode.Attributes["href"].Value;
HtmlNode songInfoNode = s.SelectSingleNode("./div[@class='left']");
string songInfo = GetSongInfoLine(songInfoNode);
Console.WriteLine("Title: {0}\t", title);
Console.WriteLine("Information: {0}\t", songInfo);
Console.WriteLine("Download link: {0}\t", downloadLink);
Console.WriteLine();
}
}
private string GetSongInfoLine(HtmlNode songInfoNode)
{
var textNodes = songInfoNode.Descendants("#text");
var infoBuilder = new StringBuilder();
foreach (var node in textNodes)
{
if (infoBuilder.Length > 0)
{
infoBuilder.Append(", ");
}
infoBuilder.Append(node.InnerText.Trim());
}
return infoBuilder.ToString();
}
}
}
+1謝謝!從它的外觀來看,它似乎在工作並完成我的需求,但如果它能正常工作,我會讓你知道。再次感謝...!!! – TheGaMeR123
它就像一個魅力,但我也需要提取歌曲信息,如果你知道如何做到這一點,請告訴!! – TheGaMeR123
@ TheGaMeR123,更新。但請嘗試自己嘗試更多。 – rufanov
如果你不知道從哪裏開始,那麼學習正則表達式是哪裏去了。
使用正則表達式,您可以將HTML代碼解析到相關標記中,然後執行任何您想做的事情。
這個地方確實是最好的之一,我知道的正則表達式:http://www.regular-expressions.info/
此外,爲了測試正則表達式,有一個極好的工具叫做正則表達式教練,測試學習正則表達式非常有用的: http://www.weitz.de/regex-coach/
您有什麼*嘗試*?什麼工作?什麼沒有? – Piskvor
試試這個:http://htmlagilitypack.codeplex.com/你可以用這個庫解析主頁一個你需要的內容/鏈接的過濾器 –
@Piskvor不幸的是我沒有試過任何東西因爲我不知道從哪裏開始。 – TheGaMeR123