怎么用.net core 实现简单爬虫


本篇内容主要讲解“怎么用.net core 实现简单爬虫”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用.net core 实现简单爬虫”吧!HttpCode.Core源自于HttpCode(传送门),不同的是HttpCode.Core是基于.net standard 2.0实现的,移除了HttpCode与windows相耦合的api,且修改了异步实现,其余特性完全与HttpCode相同,大家 如果在使用中有什么问题可以查看在线文档(传送门)HttpCode.Core完全开源,已传到github,地址:https://github.com/stulzq/HttpCode.Core为了方便大家使用,也传到了nuget,地址:https://www.nuget.org/packages/HttpCode.Core/,在nuget中搜索HttpCode.Core或执行命令Install-Package HttpCode.Core就可以使用了。具体的使用方法大家可以查阅在线文档,或者查看github。简单、易用、高效 一个有态度的开源.Net Http请求框架!首先使用谷歌浏览器的开发者工具,抓取博客园首页获取博文列表的地址:从中我们可以分析出:1. 请求地址https://www.cnblogs.com/mvc/AggSite/PostList.aspx2.请求方式Post3.请求数据{ “CategoryType”:”SiteHome”, “ParentCategoryId”:0, “CategoryId”:808, “PageIndex”:3, “TotalPostCount”:4000, “ItemListActionName”:”PostList”}请求数据中,我们应当关心的是PageIndex 代表的是 页数,我们可通过变换这个参数的值来获取不同页面的数据。我们先使用HttpCode.Core来试一试获取数据:int pageIndex = 1;//页数HttpHelpers httpHelpers=new HttpHelpers();HttpItems items=new HttpItems();items.Url = “https://www.cnblogs.com/mvc/AggSite/PostList.aspx”;//请求地址items.Method = “Post”;//请求方式 postitems.Postdata = “{“CategoryType”:”SiteHome”,” + “”ParentCategoryId”:0,” + “”CategoryId”:808,” + “”PageIndex”:”+ pageIndex + “,” + “”TotalPostCount”:4000,” + “”ItemListActionName”:”PostList”}”;//请求数据HttpResults hr = httpHelpers.GetHtml(items);Console.WriteLine(hr.Html);Console.ReadKey();运行截图:可以看到我们已经成功获取了数据,证明我们的分析是正确的。刚刚我们测试接口返回的数据可以看出返回的是一堆html字符串。我们只想要博文的标题、作者、博文地址等等信息,我们不需要多余的html字符串,下面我们使用HtmlAgilityPack这个解析网页的组件来获得我们想要的数据。关于这个组件的使用,博客园已经有不少介绍此组件的文档,大家可以搜索查看,使用此组件需具备xpath相关知识,我就不在此详细叙述了。1.首先通过nuget安装HtmlAgilityPack组件  打开程序包控制台  执行命令Install-Package HtmlAgilityPack -Version1.5.2-beta62. 解析返回的数据贴一下返回的部分数据: 4 前段时间看了 周志明的那本 《深入理解java虚拟机》。对于 平台无关性 问题,有了一些新的认识。所以特写一篇博客来进行总结。 这是我的第一篇不针对具体技术,而只针对计算机系统和原理的博客文章,而这种话题,总是比较宽泛,而我本人的水平有限,所以我也只能泛泛的写写,思考的不对的地方,还望读者不吝批评。 … eleven_yw 发布于 2017-09-03 22:12 评论(2)阅读(210) 0 现在各个企业管理网站对登录的账号都要进行权限管理,并且相当重要,每个账号登录进去所能看到的东西大不相同,下面是实现该功能的一个的一种方法。 需求: 权限:权限是使用者操作系统中功能模块的能力,如“角色管理”模块、“资费管 理”模块和“账单管理”模块等。通过指定权限,可将使用者的操作限定在指定的 范围 … Loseheart 发布于 2017-09-03 21:34 评论(0)阅读(354)从中我们不难看出每一个数据是以class=post_item的div来进行区分的,我们想要的博文地址、标题等是在这个div里面的class=post_item_body的div里面,以此类推我们可以分析出:博文标题博文地址 ..以此类推因为HtmlAgilityPack是通过xpath来解析网页的,所以现在我们要根据我们上面分析出的路径来写xpath,这里不明白xpath的可以去w3cschool学习一下,非常简单。下面是我写好的解析博文标题、地址和作者的代码,抓取其他信息可以自己参考试一试://解析数据HtmlDocument doc=new HtmlDocument();//加载htmldoc.LoadHtml(hr.Html);//获取 class=post_item_body 的div列表HtmlNodeCollection 香港云主机 itemNodes = doc.DocumentNode.SelectNodes(“div[@class=’post_item’]/div[@class=’post_item_body’]”);//循环根据每个div解析我们想要的数据foreach (var item in itemNodes){ //获取包含博文标题和地址的 a 标签 var nodeA = item.SelectSingleNode(“h4/a”); //获取博文标题 string title = nodeA.InnerText; //获取博文地址 a标签的 href 属性 string url = nodeA.GetAttributeValue(“href”, “”); //获取包含作者名字的 a 标签 var nodeAuthor = item.SelectSingleNode(“div[@class=’post_item_foot’]/a[@class=’lightblue’]”); string author = nodeAuthor.InnerText; Console.WriteLine($”标题:{title} | 作者:{author} | 地址:{url}”);}运行截图:前面我们分析出请求参数中的PageIndex是页数,分析单个页面的代码我们也写出来来,那么我们可以通过循环递增页数,来达到抓取不同分页数据的要求。贴一下完整的代码int pageIndex = 1;//页数int maxPageIndex = 10;//最大页数HttpHelpers httpHelpers=new HttpHelpers();for (int i = 0; i
{ HttpItems items = new HttpItems(); items.Url = “https://www.cnblogs.com/mvc/AggSite/PostList.aspx”;//请求地址 items.Method = “Post”;//请求方式 post items.Postdata = “{“CategoryType”:”SiteHome”,” + “”ParentCategoryId”:0,” + “”CategoryId”:808,” + “”PageIndex”:” + (i+1) + “,” + //因为i从0开始 所以此处我们要加1 “”TotalPostCount”:4000,” + “”ItemListActionName”:”PostList”}”;//请求数据 HttpResults hr = httpHelpers.GetHtml(items); //解析数据 HtmlDocument doc = new HtmlDocument(); //加载html doc.LoadHtml(hr.Html); //获取 class=post_item_body 的div列表 HtmlNodeCollection itemNodes = doc.DocumentNode.SelectNodes(“div[@class=’post_item’]/div[@class=’post_item_body’]”); Console.WriteLine($”第{i+1}页数据:”); //循环根据每个div解析我们想要的数据 foreach (var item in itemNodes) { //获取包含博文标题和地址的 a 标签 var nodeA = item.SelectSingleNode(“h4/a”); //获取博文标题 string title = nodeA.InnerText; //获取博文地址 a标签的 href 属性 string url = nodeA.GetAttributeValue(“href”, “”); //获取包含作者名字的 a 标签 var nodeAuthor = item.SelectSingleNode(“div[@class=’post_item_foot’]/a[@class=’lightblue’]”); string author = nodeAuthor.InnerText; //输出数据 Console.WriteLine($”标题:{title} | 作者:{author} | 地址:{url}”); } //每抓取一页数据 暂停三秒 Thread.Sleep(3000);}Console.ReadKey();运行截图:一个简单的.net core实现的简单爬虫就此完成!到此,相信大家对“怎么用.net core 实现简单爬虫”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!推荐阅读:实现.NET Core配置Provider之EF免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@if98.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。开发云公众号手机网站二维码Copyright Yisu Cloud Ltd. All Rights Reserved. 2018 版权所有广州开发云计算有限公司粤ICP备17096448号-1
粤公网安备 44010402001142号增值电信业务经营许可证编号:B1-20181529

相关推荐: springboot2.x怎么集成缓存注解及设置过期时间

本篇内容介绍了“springboot2.x怎么集成缓存注解及设置过期时间”的有关知识,在实际案例的操作过程中,不少人都会遇到 香港云主机这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!参考:https://www.…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/05 14:07
下一篇 08/05 14:07

相关推荐