如何在ASP.NET C#中获取网页源代码?

4

如何在C# ASP.NET中获取页面的HTML代码?

例如:http://google.com

我该如何通过ASP.NET C#获取这个HTML代码?


4
不确定你在寻找什么…也许需要稍微调整措辞吗? - Justin Niessner
@ Justin,你现在能看到它了吗? - anirudha Gupta
我想你想问的是:“如何获取浏览器在请求网页后呈现的HTML并将其放入字符串中?” - sclarson
@ sparks 我想获取网页的HTML代码,不用担心图片是否隐藏以及其他标记语言的问题。我只需要HTML代码。 - anirudha Gupta
1
请不要编辑“下一个问题”链接。谢谢。 - Marc Gravell
4个回答

17

WebClient类可以满足您的需求:

string address = "http://stackoverflow.com/";   

using (WebClient wc = new WebClient())
{
    string content = wc.DownloadString(address);
}

正如评论中所提到的,您可能更喜欢使用异步版本的DownloadString来避免阻塞:

string address = "http://stackoverflow.com/";

using (WebClient wc = new WebClient())
{
    wc.DownloadStringCompleted +=
        new DownloadStringCompletedEventHandler(DownloadCompleted);
    wc.DownloadStringAsync(new Uri(address));
}

// ...

void DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if ((e.Error == null) && !e.Cancelled)
    {
        string content = e.Result;
    }
}

非常感谢Luke帮助我。 - anirudha Gupta
1
这个方法可以工作,但是你的页面会一直阻塞,直到后续的下载完成。建议使用异步方法。 - No Refunds No Returns
请问如何使用正则表达式在 HTML 页面中查找所有超链接?请到 http://stackoverflow.com/questions/1821348/how-do-regex-find-out-all-hyperlink-in-html-page 查看答案。 - anirudha Gupta

1

0
如果问题是“如何获取网页的代码后文件”,那么答案是否定的。

警告:请注意 Vedran 回答开头的“IF”。由于您的问题不是很清楚,请在将来小心措辞,否则您的问题可能会被投票降低。 - Dave Swersky
抱歉,我不太懂英语,所以你能帮我修改一下我的问题吗? - anirudha Gupta

-1

如果您计划执行大量的Web请求以访问RESTful服务,请小心使用HttpWebRequest对象。它需要一段时间才能被回收,如果您有足够的流量(每分钟只需几个调用),则可能会开始出现奇怪的行为。

如果您正在动态加载其他页面,则建议使用JavaScript进行操作。


我无法很好地理解你的回答含义,我只是用它来获取HTML代码,而不是其他任何事情。 - anirudha Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接