OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4019|回复: 1

C#爬虫,让你不再觉得神秘

[复制链接]

143

主题

145

帖子

0

精华

高级会员

Rank: 4

积分
585
金钱
585
注册时间
2020-5-25
在线时间
42 小时
发表于 2020-12-21 17:15:45 | 显示全部楼层 |阅读模式
// From File 从文件获取html信息var doc = new HtmlDocument();doc.Load(filePath);// From String 从字符串获取html信息var doc = new HtmlDocument();doc.LoadHtml(html);// From Web   从网址获取html信息var url = "http://html-agility-pack.net/";var web = new HtmlWeb();var doc = web.Load(url);1.1、这里介绍一下最后一种用法var web = new HtmlWeb();var doc = web.Load(url);
在 web 中我们还可以设置cookie、headers等信息,来处理一些特定的网站需求,比如需要登陆等。
1.2 用法解释
网页在你查看网页源代码之后只是一段字符串,而爬虫所做的就是在这堆字符串中,查询到我们想要的信息,挑选出来。
以往的筛选方法:正则 (太麻烦了,写起来有些头疼)
HtmlAgilityPack 支持通过XPath来解析我们需要的信息。
1.2.1 在哪里找XPath?
网页右键检查
通过XPath就可以准确获取你想要元素的全部信息。
1.2.2 获取选中Html元素的信息?
获取选中元素
var web = new HtmlWeb();var doc = web.Load(url);var htmlnode = doc?.DocumentNode?.SelectSingleNode("/html/body/header")
获取元素信息
htmlnode.InnerText;htmlnode.InnerHtml;//根据属性取值htmlnode?.GetAttributeValue("src", "未找到")2、自己封装的类库 /// <summary>    /// 下载HTML帮助类    /// </summary>    public static class LoadHtmlHelper    {        /// <summary>        /// 从Url地址下载页面        /// </summary>        /// <param name="url"></param>        /// <returns></returns>        public async static ValueTask<HtmlDocument> LoadHtmlFromUrlAsync(string url)        {            HtmlWeb web = new HtmlWeb();             return await                 web?.LoadFromWebAsync(url);        }        /// <summary>        /// 获取单个节点扩展方法        /// </summary>        /// <param name="htmlDocument">文档对象</param>        /// <param name="xPath">xPath路径</param>        /// <returns></returns>        public static HtmlNode GetSingleNode(this HtmlDocument htmlDocument, string xPath)        {          return  htmlDocument?.DocumentNode?.SelectSingleNode(xPath);        }        /// <summary>        /// 获取多个节点扩展方法        /// </summary>        /// <param name="htmlDocument">文档对象</param>        /// <param name="xPath">xPath路径</param>        /// <returns></returns>        public static HtmlNodeCollection GetNodes(this HtmlDocument htmlDocument, string xPath)        {            return htmlDocument?.DocumentNode?.SelectNodes(xPath);        }             /// <summary>        /// 获取多个节点扩展方法        /// </summary>        /// <param name="htmlDocument">文档对象</param>        /// <param name="xPath">xPath路径</param>        /// <returns></returns>        public static HtmlNodeCollection GetNodes(this HtmlNode htmlNode, string xPath)        {            return htmlNode?.SelectNodes(xPath);        }        /// <summary>        /// 获取单个节点扩展方法        /// </summary>        /// <param name="htmlDocument">文档对象</param>        /// <param name="xPath">xPath路径</param>        /// <returns></returns>        public static HtmlNode GetSingleNode(this HtmlNode htmlNode, string xPath)        {            return htmlNode?.SelectSingleNode(xPath);        }        /// <summary>        /// 下载图片        /// </summary>        /// <param name="url">地址</param>        /// <param name="filpath">文件路径</param>        /// <returns></returns>        public async static ValueTask<bool> DownloadImg(string url ,string filpath)        {            HttpClient httpClient = new HttpClient();            try            {                var bytes = await httpClient.GetByteArrayAsync(url);                using (FileStream fs = File.Create(filpath))                {                    fs.Write(bytes, 0, bytes.Length);                }                return File.Exists(filpath);            }            catch (Exception ex)            {                             throw new Exception("下载图片异常", ex);            }                    }    }  视频学习资料无偿自取:    一节课快速认识人工智能必备语言:pythonhttp://www.makeru.com.cn/live/detail/1635.html?s=143793python零基础全套http://www.makeru.com.cn/course/details/1804.html?s=143793
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4471
金钱
4471
注册时间
2013-4-22
在线时间
335 小时
发表于 2020-12-21 21:34:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 12:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表