zoukankan      html  css  js  c++  java
  • 利用HtmlAgilityPack库进行HTML数据抓取

    主要介绍基于XPATH的文本分析方式的实现,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using HtmlAgilityPack;
    namespace MyIdea.Spider
    {
        class Program
        {
            static void Main(string[] args)
            {
                GetDataFromFile();
                GetDataFromUrl();
                Console.ReadKey();
            }
    
            static void GetDataFromFile()
            {
                HtmlDocument doc = new HtmlDocument();
                doc.Load(AppDomain.CurrentDomain.BaseDirectory.Replace(@"binDebug","") + "/test.html");
                Console.Write("==================html文件解析结果(test1)==================
    ");
                Console.Write(string.Format("div节点2的内容:{0}
    ", doc.DocumentNode.SelectNodes("/html/body/div/div")[1].InnerText));
                Console.Write(string.Format("div节点3中第一个div子节点内容:{0}
    
    ", doc.DocumentNode.SelectNodes("/html/body/div/div/div")[0].InnerText));
            }
    
            static void GetDataFromUrl()
            {
                string url = "http://movie.douban.com/chart";
                string movieXpath = "/html/body/div[3]/div[1]/div/div[1]/div/div/table/tr/td[2]/div";
                HtmlWeb request = new HtmlWeb();
                HtmlDocument doc = request.Load(url);
    
                HtmlNodeCollection movieItems = doc.DocumentNode.SelectNodes(movieXpath);
                Console.Write("==========豆瓣电影排行榜页面电影信息解析结果(test2)==========
    ");
                foreach (HtmlNode item in movieItems)
                {
                    string title = item.Descendants("a").First().InnerText.Replace(" ","").Replace("
    ","");
                    string introduce = item.Descendants("p").First().InnerText.Replace(" ", "").Replace("
    ", "");
                    Console.WriteLine("
    <片名>:"+title);
                    Console.WriteLine("<介绍>:" + introduce);
                }
            }
        }
    }

    解析结果

  • 相关阅读:
    LeetCode#237 Delete Node in a Linked List
    数据库概念
    请基于 TCP/IP 五层网络模型描述下当我们在浏览器请求 https ://pp.io 站点时,发生了哪些事情
    高并发大流量
    mysql关于索引
    php基础——会话控制
    php基础——运算符知识
    php基础——常量及数据类型考察
    引用变量和cow机制
    关系基本特性的运算封闭性
  • 原文地址:https://www.cnblogs.com/huangzelin/p/4564380.html
Copyright © 2011-2022 走看看