C#从网页中的对象获取文本

时间:2013-05-18 12:18:08

标签: c# html text-extraction

我正在尝试重新创建一个来自在线广播电台的旧C#应用程序。旧的问题是,它加载整个网页只是为了显示它的某个区域,这需要更多我认为必要的资源。所以,现在我正在重写整个应用程序,我正在寻找一种方法来从网站上的以下代码中检索文本:

 <div id="now" style="visibility: visible; display: block;">
    <div class="scroll" style="margin-left: 0.000px;">
        <div id="title">SONG_NAME</div>
        <div id="artist">SONG_ARTIST</div>  
    </div>
 </div>

此作品在页面上不断更新,包含当前歌曲的名称和艺术家。

id =“title”是歌曲的名称,id =“artist”是该歌曲的艺术家。

我想每隔10秒左右检索一次名字和艺术家。

知道使用什么代码吗?

1 个答案:

答案 0 :(得分:0)

您可能想要将整个页面拉回来。主要考虑因素是:

  • 您可以将html请求为uncompressed,然后使用HttpWebResponse.GetResponseStream打开该流,然后阅读,直到您需要的块结束(您需要随时分析文本) ),最后调用HttpWebResponse.Close关闭流并释放连接
  • 如果整个响应被压缩,在解压缩之前无论如何都可以更有效地获取整个响应。

您需要测试哪种方法对您正在抓取的特定页面更有效。

所以通常的方法是检索整个html流,然后使用正则表达式找到你需要的块,并保持你的代码简单。

<强>建议

如果你想保持真的简单,那么看看HtmlAgilityPack,它甚至可以在NuGet上与Visual Studio 2012一起使用。它使得使用html抓取非常简单。