网页 抓取 innertext 试题(模拟登陆之html代码问题解决需要的解析html解析)
优采云 发布时间: 2022-03-27 05:19网页 抓取 innertext 试题(模拟登陆之html代码问题解决需要的解析html解析)
背景
通过模拟登录,得到了对应的网页信息,接下来就是解析html,从中过滤出我需要的内容
这个过程很清晰,获取数据-过滤数据-存储数据-显示数据
功能说明
解析html代码,过滤掉需要的内容
附言。这次使用的是上次模拟登录保存的html文本。这两个模块还没有合并。
代码html代码
事件属性
类型:
浏览
日期:
2017/2/22
用户:
李小明
时间:
18:43:00
描述:
Path:
[222服务器]:\Java资料
后面的代码
static void Main(string[] args)
{
//读取html文本
StreamReader sr = new StreamReader("E:\\【Project】\\数据抓取\\html文本.txt", Encoding.Default);
String htmltxt = sr.ReadToEnd();
sr.Close();
//HtmlDocument加载html文本
HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(htmltxt);
//提取html中的需要字段
HtmlNode type_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[1]/td[2]/span");
HtmlNode date_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[1]/td[4]/span");
HtmlNode user_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[2]/td[2]/span");
HtmlNode time_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[2]/td[4]/span");
HtmlNode path_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[3]/td/textarea");
//输出提取的字段
Console.WriteLine(date_node.InnerText);
Console.WriteLine(time_node.InnerText);
Console.WriteLine(user_node.InnerText);
Console.WriteLine(type_node.InnerText);
Console.WriteLine(path_node.InnerText.Replace("\r", "").Replace("\n", "").Replace("\t", ""));
Console.ReadKey();
}
问题解决了
所需材料
引用 HtmlAgilityPack,地址
ScrapySharp,提供css选择器,比较方便(我没找到,所以没用,使用HtmlAgilityPack可以解决我的问题)
形式问题
HtmlAgilityPack在DOM上分层解析,但是form层没用,需要跳过(提示:逐层写下来再验证,这样会避免很多错误)
参考博客
概括
数据获取成功后,接下来的工作就是处理、存储、展示
技术点实现后,重新组织需求,然后合并模块,优化整个系统
关于html解析,这是我现在正在尝试的,根据系统要求继续研究。