zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    重识linux-常见压缩和解压缩命令
    重识linux-压缩文件的原理
    重识linux-关于selinux
    重识linux-循环执行的例行性工作调度
    重识linux-仅执行一次的工作调动at
    Python资源
    python hehe
    Chrome 消息机制
    自己动手写reg注册表文件
    用JavaScript截图
  • 原文地址:https://www.cnblogs.com/ideacore/p/7661826.html
Copyright © 2011-2022 走看看