Html Agility Pack 使用 XPath 选择器
想做一个爬虫程序,以前用的一直使用CSS选择器的html解析插件,最近做的项目想使用 Html Agility Pack 来做解析
Html Agility Pack使用 XPath 和 Linq 来做Html解析,我使用Xpath中记录
解析网页:http://txzhanshang.zhankoo.com/tt
列表下一页://*[contains(@class, 'pagination-right')]/a[text()='下一页']
文章地址://*[@class='zsinfo']/li/a[@href]
// GET: Test
public ActionResult Index()
{
var crawlerConfigList = _crawlerConfigService.GetCrawlerConfigs();
foreach (var crawlerConfig in crawlerConfigList)
{
GetList(crawlerConfig);
}
ViewBag.UrlList = urlList;
return View(crawlerConfigList);
} private void GetList(CrawlerConfig crawlerConfig)
{
var web = new HtmlWeb();
var htmlDoc = web.Load(crawlerConfig.CrawlerUrl);
var node = htmlDoc.DocumentNode.SelectNodes(crawlerConfig.ASelector);
node.ForEach(x =>
{
urlList.Add(x.Attributes["href"].Value);
}); //下一页
var nextpageNode = htmlDoc.DocumentNode.SelectSingleNode(crawlerConfig.ListNextPageSelector);
if (nextpageNode != null)
{
var nextpage = nextpageNode.Attributes["href"].Value;
if (!string.IsNullOrEmpty(nextpage))
{
crawlerConfig.CrawlerUrl = crawlerConfig.CrawlerDomain + nextpage;
GetList(crawlerConfig);
}
}
}
移除某个节点
var url = "http://txzhanshang.zhankoo.com/detail/12709.html";
var web = new HtmlWeb();
var htmlDoc = web.Load(url);
var node = htmlDoc.DocumentNode.SelectSingleNode("//*[@class='inner-wrap']");
//移除某个节点
foreach (var rm in node.SelectNodes("//*[@class='newsContenttip']"))
{
rm.Remove();
}
var ss = node.InnerText;
var sss = node.InnerHtml;
Html Agility Pack 使用 XPath 选择器的更多相关文章
- WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题
今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...
- 强大而灵活的的Html解析器——Html Agility Pack
一.概述 Html Agility Pack 简称HAP,是一个强大而灵活的解析Html DOM的.Net类库. 二.官方链接 官网:http://html-agility-pack.net/ NuG ...
- Html Agility Pack基础类介绍及运用
第一篇只对Html Agility Pack做了一个大概的介绍,在接下来的章节会比较深入的介绍Html Agility Pack. Html Agility Pack 源码中的类大概有28个左右,其实 ...
- HTML WEB 和HTML Agility Pack结合
现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行分析筛选的过程.比如,有的比较购物网站,会同时去抓取不同购物网 ...
- 一款很不错的html转xml工具-Html Agility Pack
之前发个一篇关于实现html转成xml的劣作<实现html转Xml>,受到不少网友的关心.该实现方法是借助htmlparser去分解html内容,然后按照dom的结构逐个生成xml字符串. ...
- Html Agility Pack解析HTML页
文章来源:Html Agility Pack解析HTML页 现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行分 ...
- C# 网络爬虫利器之Html Agility Pack如何快速实现解析Html
简介 现在越来越多的场景需要我们使用网络爬虫,抓取相关数据便于我们使用,今天我们要讲的主角Html Agility Pack是在爬取的过程当中,能够高效的解析我们抓取到的html数据. 优势 在.NE ...
- [c#] Html Agility Pack 解析HTML
摘要 在开发过程中,很有可能会遇到这样的情况,服务端返回的是html的内容,但需要在客户端显示纯文本内容,这时候就需要解析这些html,拿到里面的纯文本.达到这样的目的可以有很多途径,比如自己写正则表 ...
- HTML Agility Pack:簡單好用的快速 HTML Parser
HTML Agility Pack:簡單好用的快速 HTML Parser Codeplex 軟體套件(Package)資訊 套件名稱 HTML Agility Pack 作者 Simon Mouri ...
随机推荐
- gdal 遥感影像水体数据提取
- Drawable: getIntrinsicWidth()和getIntrinsicHeight()方法的使用误区
经常会使用上述两个API来获取ImageView中显示图片的大小,但是在某些情况下,这两个API返回的大小可能与原图的大小不一致,比如原图大小是72*72,分别把原图放置在xhdpi,xxhdpi,x ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_08-用户认证-认证服务查询数据库-用户登录前端
点击登陆注册链接 跳转到登陆的页面 门户的前端代码 当前路径base64编码 登陆的表单,在学习中心的前端. 这就是登陆的表单 这是表单的校验 请求服务端的接口 登陆请求的方法 请求的地址nginx上 ...
- 浅谈-对modbus的理解
浅谈-对modbus的理解 一.简介 Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准.1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP ...
- 爆库记录(X-Forwarded-For注入漏洞实战 记录)
环境位置: https://www.mozhe.cn/bug/detail/QWxmdFFhVURDay90L0wxdmJXSkl5Zz09bW96aGUmozhe 参考: http://www.fr ...
- git命令手册
以下内容是我在学习和研究Git时,对Git操作的特性.重点和注意事项的提取.精练和总结,可以做为Git操作的字典,方便大家查阅: 备注:本文会不断更新完善: 目录 一. 语法格式描述 二. git环境 ...
- python 函数、参数及参数解构
函数 数学定义 y=f(x), y是x函数,x是自变量.y=f(x0,x1...xn) Python函数 由若干语句组成的语句块,函数名称,参数列表构成,它是组织代码的最小单位 完成一定的功能 函数作 ...
- 项目中学习ReactiveCocoa的使用方法
一.注册控制器 控制器上的一个属性 @property (weak, nonatomic) IBOutlet UIBarButtonItem *signInBtn; 在 viewDidLoad 方法中 ...
- Zabbix部分监控指标
MySQL请求流量带宽.MySQL响应流量带宽.CPU使用率.内存利用率.网卡流量等.
- redis相关操作命令
一.相关命令列表: 命令原型 时间复杂度 命令描述 返回值 KEYS pattern O(N) 时间复杂度中的N表示数据库中Key的数量.获取所有匹配pattern参数的Keys.需要说明的是,在我们 ...