C# html数据爬取与过滤

news/2024/9/20 14:24:04/文章来源:https://www.cnblogs.com/SmallChen/p/18422406

1.首先安装第三方HTML数据过滤包  HtmlAgilityPack

我爬取的网站是一个树洞网站:https://i.jandan.net/treehole,他是一个单体网站,不通过api请求,所以只能根据HTML过滤,他的分页是通过base64加密的

 这是获取到的部分数据,这是我们需要的有效数据,他是有固定结构的,我们只要筛选这里面的数据显示出来就好了

 

以下是所有代码

using HtmlAgilityPack;
using System.Text;
using System.Text.RegularExpressions;await ReadHtml();while (true)
{Console.WriteLine("请输入页码:");var pageNumByNowDate = Console.ReadLine();if (!int.TryParse(pageNumByNowDate, out int pageNum)){Console.WriteLine("页码格式不正确,请重新输入数字");continue;}Console.Clear();byte[] buffer = Encoding.UTF8.GetBytes(DateTime.Now.ToString("yyyyMMdd") + "-" + pageNum);await ReadHtml("/" + Convert.ToBase64String(buffer));
}//读取html
async Task ReadHtml(string url = "")
{var client = new HttpClient();var request = new HttpRequestMessage(HttpMethod.Get, "https://i.jandan.net/treehole" + url);request.Headers.Add("Cookie", "PHPSESSID=38e64nulb56bqgl6e27b5sp31l");var response = await client.SendAsync(request);response.EnsureSuccessStatusCode();ClearData(await response.Content.ReadAsStringAsync());
}//清洗脏数据
void ClearData(string html)
{HtmlDocument doc = new HtmlDocument();doc.LoadHtml(html);var commentTexts = doc.DocumentNode.SelectNodes("//div[@class='commenttext']");foreach (var comment in commentTexts){var commonText = comment.InnerText.Length > 30 ? string.Join("", comment.InnerText.Select((c, i) => (i > 0 && i % 50 == 0) ? $"{c}\r\n" : c.ToString().Trim().Replace("<br/>", "").Replace("<br />", ""))) : comment.InnerText.Trim().Replace("<br/>", "").Replace("<br />", "");var childrens = comment.ParentNode.SelectNodes(".//span[@class='tucao-unlike-container']");Console.WriteLine();Console.WriteLine();Console.WriteLine(commentTexts.IndexOf(comment) + 1 + "" + commonText);Console.WriteLine();Console.WriteLine(string.Join("               ", childrens.Select(c=>c.InnerText.Trim())));Console.WriteLine("_____________________________________________________________");}
}

输出效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/800521.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用代理进行3389/RDP远程桌面连接,流畅不卡,解决连接海外服务器线路问题卡顿

平时连接window海外服务器的时候,因为是通过IP直连,所以延迟非常高,并且不稳定。 原因:Window默认的远程桌面连接,不支持使用代理方式进行连接,使用的是直连,网络线路非常不稳定解决:使用parallels client客户端进行连接,支持使用代理 下载地址:https://www.parallel…

RK3568串口配置默认上拉

rockchip,pins =/* uart4_rxm0 */<1 RK_PA4 2 &pcfg_pull_up>,/* uart4_txm0 */<1 RK_PA6 2 &pcfg_pull_up>;

idea新版ui调出前进/后退箭头

查看源码或者查看类/方法定义,需要前进或者后退 Jetbrains IDE新UI设置前进/后退导航键_idea设置前进后退-CSDN博客

气象数据

GDAS(Global Data Assimilation System)全球数据同化系统,是美国国家气象局(National Weather Service, NWS)的一部分,它是一个复杂的系统,用于生成全球范围的气象分析数据。 1.FNL大气再分析数据集 是GDAS的最终分析产品,用于历史和气候研究 更新慢 1度的 https://rda…

中电信翼康基于Apache Dolphinscheduler重构“星海济世医疗数据中台”实践经验分享

文章作者:尚志忠 编辑整理:曾辉 行业背景 随着大数据、云计算、5G、人工智能等技术的快速发展,以及医疗信息化建设的不断深入,数据中台作为打通医疗数据融合壁垒、实现数据互通与共享、构建高效数据应用的关键信息平台,正逐渐成为推动医疗行业数字化转型和创新发展的重要力…

ESXi 8.0 中已弃用且不受支持的设备 (88172)

ESXi 8.0 中已弃用且不受支持的设备 (88172)ESXi 8.0 中已弃用且不受支持的设备 (88172) 请访问原文链接:ESXi 8.0 中已弃用且不受支持的设备 (88172),查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org该文为官方 KB 的翻译和整理,方便查询 ESXi 8.0 中不再支持…

帝国cms建立目录不成功!请检查目录权限

当帝国CMS提示“建立目录不成功!请检查目录权限”时,通常是因为帝国CMS在尝试生成静态页面或执行其他文件操作时,遇到了文件系统权限问题。以下是一些解决此问题的步骤: 常见原因及解决办法目录权限不足:解决办法:确保目标目录具有可写的权限。通常,文件权限应设为 644,…

帝国CMS:恢复备份文件刷新时出错——建立目录不成功

当帝国CMS在恢复备份文件刷新时提示“建立目录不成功”,这通常意味着在生成静态页面或存放相关文件的过程中遇到了问题。以下是一些可能的原因及其解决办法: 常见原因及解决办法目录权限问题:解决办法:检查目标目录的权限是否正确。通常文件权限应设为 644,目录权限为 755…

帝国CMS 建立目录不成功!

帝国CMS在尝试建立目录时提示“建立目录不成功”,通常是因为权限问题或其他与文件系统相关的障碍。以下是一些可能的原因及解决方法: 常见原因及解决方法目录权限不足:解决方法:确保目标目录具有可写的权限。通常,文件权限应设为 644,目录权限为 755。可以通过FTP客户端或…

帝国CMS提示parse error syntax error的解决方法

当帝国CMS提示“Parse error: syntax error”时,这通常意味着PHP解析器遇到了无法理解的代码,最常见的原因是语法错误。以下是一些解决此类问题的方法: 常见原因及解决办法检查语法错误:解决办法:仔细检查报错行附近的代码,查找是否有语法错误,如缺少分号、括号不匹配、…

帝国CMS提示parse error syntax error的解决方法

当帝国CMS提示“Parse error: syntax error”时,这通常意味着PHP解析器遇到了无法理解的代码,最常见的原因是语法错误。以下是一些解决此类问题的方法: 常见原因及解决办法检查语法错误:解决办法:仔细检查报错行附近的代码,查找是否有语法错误,如缺少分号、括号不匹配、…

香橙派5Pro+虚拟机Ubuntu18.04交叉编译+Opencv4.7

1.基础工具安装 ①Ubuntu虚拟机下交叉编译工具链安装 香橙派5Pro为Arm64位架构,因此需要安装g++-aarch64-linux-gnu以及gcc-aarch64-linux-gnu(有其它交叉编译器,本文以此编译器为例)更新软件源 sudo apt update sudo apt upgrate点击查看交叉编译工具链安装 apt-cache sea…