爬虫爬出来的数据不全_.NET轻松写博客园爬虫

faa6508c1bee1c0f59ce510d19aed15d.gif

爬虫,是一种按照一定的规则,自动地抓取网站的程序或者脚本。`.NET`写爬虫非常简单,并能轻松优化性能。今天我将分享一段简短的代码,爬出博客园前200页精华内容,然后通过微小的改动,将代码升级为多线程爬虫,让爬虫速度提升数倍;最后将对爬到了内容进行一些有趣的分析。

本文演示的代码,可以从这里下载:https://github.com/sdcb/blog-data/tree/master/2019/20190826-cnblogs-crawler-home

我的演示代码通过LINQPad运行,可以在这里找到最新的LINQPad下载链接:https://www.linqpad.net/Download.aspx

这些代码同样可以运行在Visual Studio中。其中.Dump()方法可以在Visual Studio中搜索并安装NuGet包即可兼容:

Install-Package LINQPad

爬虫的三要素

经过我“多年”的爬虫操作的经验,我认为爬虫无非就是:

  1. 下载网站数据;

  2. 解析/保存网站数据;

  3. 分析数据与下个页面之间的关系,以便继续下载下个页面数据;

下面我将通过代码演示这三点。

下载网站数据

换作以前,有WebRequest/WebClient/RestSharp之类的选择,但如今已经都被HttpClient取代了,HttpClient同时内置于.NET Framework 4.5/netstandard 1.1及以后的版本,不用安装第三方包。

代码使用也非常简单:

var client = new HttpClient();string response = await client.DownloadStringAsync("https://www.cnblogs.com");

其中response就是从博客园下载的html字符串。

解析网站数据

.NET解析html有多个包可供选择,如HtmlAgilityPack、CsQuery等。但AngleSharp由于其简单好用、功能强大,已经也成为解析html的不错之选。

AngleSharp是开源项目,Github地址是:https://github.com/AngleSharp/AngleSharp。

近期还加入了.NET Foundation(.NET基金会),官网地址是:https://anglesharp.github.io 。

使用AngleSharp解析html过程(在`INQPad`,按Ctrl+Shift+P快速安装NuGet包):

Install-Package AngleSharpInstall-Package Newtonsoft.Json

使用代码如下:

var parser = new HtmlParser();IHtmlDocument dom = parser.ParseDocument(@"            ">博客园        ">百度        ">谷歌   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值