网页 抓取 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解析,这是我现在正在尝试的,根据系统要求继续研究。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线