想做一个爬虫程序,以前用的一直使用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 选择器的更多相关文章

  1. WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题

    今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...

  2. 强大而灵活的的Html解析器——Html Agility Pack

    一.概述 Html Agility Pack 简称HAP,是一个强大而灵活的解析Html DOM的.Net类库. 二.官方链接 官网:http://html-agility-pack.net/ NuG ...

  3. Html Agility Pack基础类介绍及运用

    第一篇只对Html Agility Pack做了一个大概的介绍,在接下来的章节会比较深入的介绍Html Agility Pack. Html Agility Pack 源码中的类大概有28个左右,其实 ...

  4. HTML WEB 和HTML Agility Pack结合

    现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行分析筛选的过程.比如,有的比较购物网站,会同时去抓取不同购物网 ...

  5. 一款很不错的html转xml工具-Html Agility Pack

    之前发个一篇关于实现html转成xml的劣作<实现html转Xml>,受到不少网友的关心.该实现方法是借助htmlparser去分解html内容,然后按照dom的结构逐个生成xml字符串. ...

  6. Html Agility Pack解析HTML页

    文章来源:Html Agility Pack解析HTML页 现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行分 ...

  7. C# 网络爬虫利器之Html Agility Pack如何快速实现解析Html

    简介 现在越来越多的场景需要我们使用网络爬虫,抓取相关数据便于我们使用,今天我们要讲的主角Html Agility Pack是在爬取的过程当中,能够高效的解析我们抓取到的html数据. 优势 在.NE ...

  8. [c#] Html Agility Pack 解析HTML

    摘要 在开发过程中,很有可能会遇到这样的情况,服务端返回的是html的内容,但需要在客户端显示纯文本内容,这时候就需要解析这些html,拿到里面的纯文本.达到这样的目的可以有很多途径,比如自己写正则表 ...

  9. HTML Agility Pack:簡單好用的快速 HTML Parser

    HTML Agility Pack:簡單好用的快速 HTML Parser Codeplex 軟體套件(Package)資訊 套件名稱 HTML Agility Pack 作者 Simon Mouri ...

随机推荐

  1. Flutter移动电商实战 --(47)详细页_Flutter_html插件的使用

    详情里面是hemlt和图片组成的,但是flutter是不支持html的所以需要其他插件 flutter webview plugin:这个不太好用 flutter_html:用这个插件 先解决之前一个 ...

  2. C# 读取文件内容

    读取文件内容有三种方式 全部读取到字符串变量中 一次读取一行 全部读取到字符串数组中,每个数组元素存储一行文本 全部读取到字符串变量 string text = System.IO.File.Read ...

  3. 解决kali无法连接网络问题

    键入 ifconfig -a 查看网卡 ,是否存在 键入 leafpad /etc/network/interfaces 查看其中是否有如下语句,没有添加上即可:auto eth0iface eth0 ...

  4. 17flutter中的路由/命名路由/命名路由传值/无状态组件传值/有状态组件传值。

    main.dart import 'package:flutter/material.dart'; import 'package:flutter_demo/pages/Search.dart'; i ...

  5. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_02-Eureka注册中心-搭建Eureka单机环境

    我们先搭建单机环境 govern是治理的意思, 这样就把工程创建好了 创建包 创建SpringBoot的启动类. 在父工程里面已经确定了Spring Cloud的版本了.相当于锁定了版本 接下里只需要 ...

  6. Docker 部署 ELK 收集 Nginx 日志

    一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...

  7. PAT 甲级 1060 Are They Equal (25 分)(科学计数法,接连做了2天,考虑要全面,坑点多,真麻烦)

    1060 Are They Equal (25 分)   If a machine can save only 3 significant digits, the float numbers 1230 ...

  8. Canal——Canal-Adapter源码在IDEA部署运行

    一.下载源码 下载地址:https://github.com/alibaba/canal 我这里用的是canal-1.1.4版本 源码结构 client-adapter项目就是本次要部署运行的 源码导 ...

  9. python判断命令执行成功

    if os.system('lss') !=0: print 'Without the command'

  10. Zuul1与Spring Cloud Gateway对比

    一.API网关 1.1 Zuul1简介 1.2 Spring Cloud Gateway简介 二.对比 2.0 产品对比 2.1 性能对比 2.1.1 低并发场景 2.1.2 高并发场景 2.1.3 ...