所以我正在做一个有趣的项目,请记住我是一个初学者,我想获取从该广播频道https://www.ilikeradio.se/powerhitradio/latlista/播放的歌曲的信息(很抱歉,该网站是瑞典语)
,只需将其放入文本框即可。
我尝试过
WebClient web = new WebClient();
string htmlContent = new System.Net.WebClient().DownloadString(URL);
但这只是给了我源代码,而没有提供艺术家歌曲等列表项的代码。
感谢您的帮助,请记住我是初学者
答案 0 :(得分:0)
您提供的URL似乎返回了HTML,但是如果将获得的HTML与浏览器中呈现的HTML进行比较(通过右键单击网页并检查HTML),您将看到得到的是实际上与最终渲染的有所不同。原因是网站正在使用Ajax加载歌曲列表。换句话说,当您呼叫DownloadString()
时,您会从运行 的网络服务中获取结果,然后运行了javascript并对其进行了更新。
要获得最终的HTML渲染结果并不容易。但是你很幸运!
如果您访问该网站并在Chrome中打开调试工具,然后单击Network
标签。接下来,按Method
对所有请求进行排序,并且GET
请求应位于顶部。在这些GET请求中,您正在寻找以下请求:
此URL返回JSON,Web服务器最终将其加载并呈现为供您查看的“歌曲列表”。
返回的JSON是带有一些元数据的歌曲列表。您将需要解析此JSON,以提取并显示您自己网页中的歌曲列表。我怀疑您可以查看该网站的源代码并找到执行此操作的Javascript;)
Newtonsoft JSONConvert是解析JSON的最佳库。
如果要查看带有歌曲列表的JSON,请复制上面的URL并将其粘贴到浏览器地址栏中(然后按Enter键)。接下来,复制JSON结果,然后打开this。将JSON粘贴到Text
标签中,然后单击Viewer
标签。您会注意到第一个元素是Current Song
,而其他元素在歌曲列表中。还要注意,每个元素都有一个名为song
的子元素,其中包含标题。
要开始,请尝试以下操作:
using System;
using System.Net;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
WebClient web = new WebClient();
using (WebClient wc = new WebClient())
{
var json = wc.DownloadString("https://unison.mtgradio.se/api/v2/timeline?channel_id=6&client_id=6690709&to=2018-10-02T08%3A00%3A50&from=2018-10-02T07%3A00%3A50&limit=40");
dynamic stuff = JArray.Parse(json);
string name = stuff[1].song.title;
Console.WriteLine(name);
}
}
}
注意
当您尝试此操作时,您会注意到打印到控制台的歌曲名称在网页列表中不存在。这是因为,如果您查看我上面发布的JSON URL,就会有查询参数……其中之一是日期和时间。您需要相应地修改URL,以获取最新的播放列表(现在显示在网站上)。