1、使用第三方类库 HtmlAgilityPack
官方网址:https://html-agility-pack.net/?z=codeplex、
// From File 从文件获取html信息vardoc =newHtmlDocument();doc.Load(filePath);// From String 从字符串获取html信息vardoc =newHtmlDocument();doc.LoadHtml(html);// From Web 从网址获取html信息varurl ="http://html-agility-pack.net/";varweb =newHtmlWeb();vardoc = web.Load(url);
1.1、这里介绍一下最后一种用法
varweb =newHtmlWeb();
vardoc = web.Load(url);
在web中我们还可以设置cookie、headers等信息,来处理一些特定的网站需求,比如需要登陆等。
1.2 用法解释
网页在你查看网页源代码之后只是一段字符串,而爬虫所做的就是在这堆字符串中,查询到我们想要的信息,挑选出来。
以往的筛选方法:正则 (太麻烦了,写起来有些头疼)
HtmlAgilityPack 支持通过XPath来解析我们需要的信息。
1.2.1 在哪里找XPath?
网页右键检查

通过XPath就可以准确获取你想要元素的全部信息。
1.2.2 获取选中Html元素的信息?
获取选中元素
varweb =newHtmlWeb();vardoc = web.Load(url);varhtmlnode = doc?.DocumentNode?.SelectSingleNode("/html/body/header")
获取元素信息
htmlnode.InnerText;htmlnode.InnerHtml;//根据属性取值htmlnode?.GetAttributeValue("src","未找到")
2、自己封装的类库
///<summary>///下载HTML帮助类///</summary>publicstaticclassLoadHtmlHelper{///<summary>///从Url地址下载页面///</summary>///<param name="url"></param>///<returns></returns>publicasyncstaticValueTask<HtmlDocument>LoadHtmlFromUrlAsync(stringurl){HtmlWeb web =newHtmlWeb();returnawaitweb?.LoadFromWebAsync(url);}///<summary>///获取单个节点扩展方法///</summary>///<param name="htmlDocument">文档对象</param>///<param name="xPath">xPath路径</param>///<returns></returns>publicstaticHtmlNodeGetSingleNode(thisHtmlDocument htmlDocument,stringxPath){returnhtmlDocument?.DocumentNode?.SelectSingleNode(xPath);}///<summary>///获取多个节点扩展方法///</summary>///<param name="htmlDocument">文档对象</param>///<param name="xPath">xPath路径</param>///<returns></returns>publicstaticHtmlNodeCollectionGetNodes(thisHtmlDocument htmlDocument,stringxPath){returnhtmlDocument?.DocumentNode?.SelectNodes(xPath);}///<summary>///获取多个节点扩展方法///</summary>///<param name="htmlDocument">文档对象</param>///<param name="xPath">xPath路径</param>///<returns></returns>publicstaticHtmlNodeCollectionGetNodes(thisHtmlNode htmlNode,stringxPath){returnhtmlNode?.SelectNodes(xPath);}///<summary>///获取单个节点扩展方法///</summary>///<param name="htmlDocument">文档对象</param>///<param name="xPath">xPath路径</param>///<returns></returns>publicstaticHtmlNodeGetSingleNode(thisHtmlNode htmlNode,stringxPath){returnhtmlNode?.SelectSingleNode(xPath);}///<summary>///下载图片///</summary>///<param name="url">地址</param>///<param name="filpath">文件路径</param>///<returns></returns>publicasyncstaticValueTask<bool>DownloadImg(stringurl ,stringfilpath){HttpClient httpClient =newHttpClient();try{varbytes =awaithttpClient.GetByteArrayAsync(url);using(FileStream fs = File.Create(filpath)){fs.Write(bytes,0, bytes.Length);}returnFile.Exists(filpath);}catch(Exception ex){thrownewException("下载图片异常", ex);}}}
3、自己写的爬虫案例,爬取的网站https://www.meitu131.com/
数据存储层没有实现,懒得写了,靠你们喽,我是数据暂时存在了文件中
GitHub地址:
https://github.com/ZhangQueque/quewaner.Crawler.git

我自是年少,韶华倾负。
出处:
https://www.cnblogs.com/ZhangQueque/archive/2020/12/20/14163406.html
版权声明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。
继续阅读与本文标签相同的文章
上一篇 :
爬虫浅谈:C#爬虫程序
-
PS保存图片提示“无法完成请求”,这里有4种解决方法!
2026-05-14栏目: 教程
-
想买1000元左右的5G手机?我们需要等多久?
2026-05-14栏目: 教程
-
剧情反转?美企主动购买华为5G技术,华为成赞赏排行榜第一名!
2026-05-14栏目: 教程
-
城市数字化后,新一代内生安全系统可全方位保护
2026-05-14栏目: 教程
-
谷歌也来“唱衰”5G,5G手机只会徒增功耗?为何这么说?
2026-05-14栏目: 教程
