【问题标题】:Get specific text from a website (html)从网站获取特定文本 (html)
【发布时间】:2013-10-17 17:46:42
【问题描述】:

我想制作一个小程序,以便我可以快速轻松地收听这个广播电台。

http://www.offradio.gr/player

问题是我想不出任何方法来获取正在播放的曲目名称、制作人的姓名和播放历史记录。

我想过从网站的原始源代码中提取具体数据,但源代码就像 4,000 行代码——我无法处理。

有什么想法吗?

我正在使用 Visual Studio 和 C#

【问题讨论】:

  • 他们不提供 API 吗?
  • 没有。不是我知道的任何事情。如果一切都失败了,我会尝试联系他们(以及他们的开发人员),但我认为他们不会帮助我。
  • 你可以用WMP接口处理吗?他们提供我认为的
  • 对 url 进行 http 调用并将响应解析为您需要的内容
  • @colosso 你能再具体一点吗?

标签: c# javascript html visual-studio web


【解决方案1】:

我知道这不是最好的方法,但它是一个起点并且有效:

public Form1()
{
    InitializeComponent();

    webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted; // Subscribe event

    webBrowser1.Navigate("http://www.offradio.gr/player"); // Navigate to radio stream
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    /*
    Look for the element containing the element with the track number
    I've chosen this one because it has an ID means it's always the same div
    */
    HtmlElement parent = webBrowser1.Document.GetElementById("show_info");

    if (parent != null) // This event fires multiple times. Sometimes this element hasn't been created yet
    {
        /*
        We know it's a childless node inside `#show_info`.
        So let's just search for it.
        */
        foreach (HtmlElement child in parent.GetElementsByTagName("span"))
        {
                if (child.Children.Count == 0) // Check if it has children
                {
                    string title = child.InnerText; // The result
                    break;
                }
            }
        }
    }

不幸的是,我不得不使用 .NET 函数,而使用 JS 我会更简单:

document.querySelector('#show_info .field-content').innerText

更新:

让我再给你一个提示。

查看document.getElementById('show_info').innerText的输出。

你可以解析它,你就完成了!

希望对你有帮助

【讨论】:

  • 谢谢!我会努力的,我会告诉你结果如何!
猜你喜欢
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多