HtmlAgilityPack 学习和笔记

时间:2021-08-21 10:10:13

介绍:

http://www.cnblogs.com/bomo/archive/2013/01/28/2879361.html

实战 c#获取外网ip

网址:http://ip138.com/

如图:分析

HtmlAgilityPack 学习和笔记

HtmlAgilityPack 学习和笔记

有个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 == )
{
ulr = targetNodeCollection[].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[].InnerText);//这里就没有过滤了
} public static string GetHtmlStr(string url, Encoding en)
{
try
{
WebRequest rGet = WebRequest.Create(url);
rGet.Timeout = ;
using (WebResponse rSet = rGet.GetResponse())
{
using (StreamReader reader = new StreamReader(rSet.GetResponseStream(), en))
{
return reader.ReadToEnd();
}
}
}
catch (WebException)
{
//连接失败
return null;
}
}

结果:

HtmlAgilityPack 学习和笔记

            string content = GetHtmlStr("xxxx", Encoding.GetEncoding("gb2312"));
HtmlDocument document = new HtmlDocument();
document.LoadHtml(content); HtmlNodeCollection targetNodeCollection = document.DocumentNode.SelectNodes(@"//font[@class='small2']"); Console.WriteLine(targetNodeCollection[targetNodeCollection.Count-].InnerText); HtmlNodeCollection str = document.DocumentNode.SelectNodes("//td[@class='small']//table[1]//tbody[1]//tr[1]//td[2]");
Console.WriteLine(str[].InnerText); string xpathstring = "//td[@class='small']";
HtmlNodeCollection aa = document.DocumentNode.SelectNodes(xpathstring); //所有找到的节点都是一个集合
foreach (var htmlNode in aa.Where(htmlNode => htmlNode.GetAttributeValue("style", " ") == "word-wrap:break-word;width:100%;left:0;word-break :break-all;margin-right:1px;"))
{
Console.WriteLine(htmlNode.ChildNodes[].InnerText.Replace("\n", string.Empty).Replace("\t", string.Empty));
break;
}
Console.ReadKey();

HtmlAgilityPack 学习和笔记的更多相关文章

  1. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  2. DSP28377S - ADC学习编程笔记

    DSP28377S -  ADC学习编程笔记 彭会锋 2016-08-04  20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采 ...

  3. 学习ReactNative笔记整理一___JavaScript基础

    学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...

  4. 深度学习word2vec笔记之算法篇

    深度学习word2vec笔记之算法篇 声明:  本文转自推酷中的一篇博文http://www.tuicool.com/articles/fmuyamf,若有错误望海涵 前言 在看word2vec的资料 ...

  5. 强化学习读书笔记 - 02 - 多臂老O虎O机问题

    # 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...

  6. 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)

    强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...

  7. 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)

    强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...

  8. (转)深度学习word2vec笔记之基础篇

    深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...

  9. 深度学习word2vec笔记之基础篇

    作者为falao_beiliu. 作者:杨超链接:http://www.zhihu.com/question/21661274/answer/19331979来源:知乎著作权归作者所有.商业转载请联系 ...

随机推荐

  1. 微信小程序导航:官方工具+精品教程+DEMO集合(1月7更新)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug ...

  2. 006. C#使用WMI操作远程计算机

    1. 使用WMI CIM studio 查看\root\CIMV2 所有可使用的表/字段(类/属性) , 点击下载 WMI CIM studio 2. 安装完成后打开VMI CIM studio

  3. Mindjet.MindManager“参数错误”解决办法,适用于9.0、10.0和14.0

    MindManager出14.0版本了,但是在应用个别模板的时候会提示“参数错误”,然后自动关闭. 解决办法:   如果是win7系统,可以进入C:\Users\(用户名) \AppData\Loca ...

  4. 服务 Service 基本介绍

    Activity public class MainActivity extends ListActivity {     private boolean flag;//是否开启线程     publ ...

  5. 3个微信小程序体验报告

    1.小程序摩拜单车.腾讯视频.JD的体报告 2.小程序的入口存在不公平 3.小程序2.0会怎么样?WSO浅谈 KEVIN常用的APP是以摩拜单车与JD商城和大众点评等,那么今天也就通过这上个进行对比 ...

  6. [DeeplearningAI笔记]神经网络与深度学习2.11_2.16神经网络基础(向量化)

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.11向量化 向量化是消除代码中显示for循环语句的艺术,在训练大数据集时,深度学习算法才变得高效,所以代码运行的非常快十分重要.所以在深度学 ...

  7. ClientToScreen 和ScreenToClient 用法

    ClientToScreen( )是把窗口坐标转换为屏幕坐标 ScreenToClient( )是把屏幕坐标转换为窗口坐标 屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的 VC下, ...

  8. aplication.properties配置

    1.设置使用的properties文件 spring.profiles.active=dev 设置激活使用哪个properties一般设置两个,一个是开发环境的,一个是本地的测试环境 可设置默认使用开 ...

  9. Java 基础 集合框架

    Java中的集合从类的继承和接口的实现结构来说,可以分为两大类: 1 继承自Collection接口,包含List.Set和Queue等接口和实现类. 2 继承自Map接口,主要包含哈希表相关的集合类 ...

  10. [daily] pandoc

    学了LaTeX之后,你就会很自然的接触的另一种观点: LaTeX是专注于排版的,你需要专注于内容. 于是,请使用pandoc. 简单的说, pandoc就是可以将各种个样格式的文档转换成各种各样格式的 ...