c# HtmlAgilityPack获取笔趣阁小说

发布时间 2023-11-29 14:03:32作者: 摸头长不高

 

 

 

 public partial class Form2 : Form
 {
     public Form2()
     {
         InitializeComponent();
     }

     private void Form2_Load(object sender, EventArgs e)
     {

     }
     public class Result
     {
         /// <summary>
         /// 链接
         /// </summary>
         public string url { get; set; }
         /// <summary>
         /// 标题
         /// </summary>
         public string title { get; set; }
         /// <summary>
         /// 正文内容
         /// </summary>
         public string content { get; set; }
     }

     private void button1_Click_1(object sender, EventArgs e)
     {
         GetContent(textBox1.Text);
     }
     public void GetContent(string url)
     {
         List<Result> list = new List<Result>();
         HtmlWeb htmlWeb = new HtmlWeb();

         // htmlWeb.OverrideEncoding = Encoding.GetEncoding("GBK");  
         htmlWeb.OverrideEncoding = Encoding.UTF8;
         HtmlAgilityPack.HtmlDocument htmlDoc = htmlWeb.Load(url);
         var node = htmlDoc.DocumentNode;
         //选择class="top-channel clearfix"的span节点
         //  "//"表示从根节点开始查找,两个斜杠"//"表示查找所有childnodes;
         //  一个斜杠"/"表示只查找第一层的childnodes(即不查找grandchild);
         //  点斜杠"./"表示从当前结点而不是根结点开始查找(只在xpath最开始出现)
         var Nodes = node.SelectSingleNode(".//div[@class='listmain']").SelectSingleNode(".//dl");

         //var aNode = li;
         foreach (var item in Nodes.SelectNodes(".//dd"))
         {

             Result res = new Result();
             var aTag = item.SelectSingleNode(".//a");
             if (aTag.InnerText.Contains("展开全部章节"))
             {
                 continue;
             }
             else
             {
                 res.url = "https://www.bige3.cc" + aTag.GetAttributeValue("href", "");
                 res.title = aTag.InnerText;
                 list.Add(res);
             }

         }
         var dtNode = Nodes.SelectSingleNode(".//dt");
         label2.Text = dtNode.InnerText;
         // 绑定数据 不修改绑定
         this.listBox1.DataSource = list;
         this.listBox1.DisplayMember = "title";  // 显示内容  数据的属性
         this.listBox1.ValueMember = "url"; // 项的值  数据的属性
     }

     private void listBox1_MouseClick_1(object sender, MouseEventArgs e)
     {
         string url = string.Empty;
         ListBox listBox = sender as ListBox;
         if (listBox != null && listBox.SelectedIndex != -1)
         {
             url = listBox.SelectedValue.ToString();
             HtmlWeb htmlWeb = new HtmlWeb();
             htmlWeb.OverrideEncoding = Encoding.UTF8;
             HtmlAgilityPack.HtmlDocument htmlDoc = htmlWeb.Load(url);
             var doc = htmlDoc.DocumentNode;
             var Nodes = doc.SelectSingleNode(".//div[@class='Readarea ReadAjax_content']");
             richTextBox1.Text = Nodes.InnerHtml;
             richTextBox1.Text = richTextBox1.Text.Replace("<br>", "\r\n");
         }
     }
 }