您的位置:首页 > Web前端 > HTML

HtmlAgilityPack 学习和笔记

2014-07-23 16:24 363 查看
介绍:
http://www.cnblogs.com/bomo/archive/2013/01/28/2879361.html
实战 c#获取外网ip

网址:http://ip138.com/

如图:分析





有个iframe 实际上查看网页源代码是没有ip的 原因浏览器引擎解析会解析src 地址:

所以我们先获取iframe的url 在根据这个地址 取ip (当然也有人说直接用这个url 不好吗?这里考虑的是怕他变化 容错性好一点 将来)

代码:

static void Main(string[] args)
{
string content = GetHtmlStr("http://www.ip138.com/", Encoding.GetEncoding("gb2312"));
var ulr = "";
HtmlDocument document = new HtmlDocument();
document.LoadHtml(content);

HtmlNodeCollection targetNodeCollection = document.DocumentNode.SelectNodes(@"//iframe [1]");//取iframe DOM 第一个
if (targetNodeCollection != null && targetNodeCollection.Count == 1)
{
ulr = targetNodeCollection[0].GetAttributeValue("src", "");//类似jq $(xxx).attr("scr") 对应javascript getattribute
}
content = GetHtmlStr(ulr, Encoding.GetEncoding("gb2312"));
document.LoadHtml(content);
HtmlNodeCollection tempText = document.DocumentNode.SelectNodes(@"//center [1]");//取center DOM 第一个
Console.WriteLine(tempText[0].InnerText);//这里就没有过滤了
}

public static string GetHtmlStr(string url, Encoding en)
{
try
{
WebRequest rGet = WebRequest.Create(url);
rGet.Timeout = 30000;
using (WebResponse rSet = rGet.GetResponse())
{
using (StreamReader reader = new StreamReader(rSet.GetResponseStream(), en))
{
return reader.ReadToEnd();
}
}
}
catch (WebException)
{
//连接失败
return null;
}
}


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: