.NET Core 下的爬虫利器

本文介绍了在.NET Core环境中使用HtmlAgilityPack、AngleSharp和PuppeteerSharp进行网页抓取的方法。针对传统页面,HtmlAgilityPack和AngleSharp提供了解析HTML的方案,而PuppeteerSharp则用于抓取单页应用,并能将页面保存为图片或PDF。通过实例展示了如何使用这些工具抓取博客园的数据,并提供了相关库的官方链接。
摘要由CSDN通过智能技术生成

爬虫大家或多或少的都应该接触过的,爬虫有风险,抓数需谨慎。

本着研究学习的目的,记录一下在 .NET Core 下抓取数据的实际案例。爬虫代码一般具有时效性,当我们的目标发生改版升级,规则转换后我们写的爬虫代码就会失效,需要重新应对。抓取数据的主要思路就是去分析目标网站的页面逻辑,利用xpath、正则表达式等知识去解析网页拿到我们想要的数据。

本篇主要简单介绍三个组件的使用,HtmlAgilityPackAngleSharpPuppeteerSharp,前两个可以处理传统的页面,无法抓取单页应用,如果需要抓取单页应用可以使用PuppeteerSharp

关于这三个组件库的实际应用可以参考一下定时任务最佳实战系列文章。

新建一个控制台项目,抓取几个站点的数据来试试,先做准备工作,添加一个IHotNews的接口。

using System.Collections.Generic;
using System.Threading.Tasks;

namespace SpiderDemo
{
    public interface IHotNews
    {
        Task<IList<HotNews>> GetHotNewsAsync();
    }
}

HotNews模型,包含标题和链接

namespace SpiderDemo
{
    public class HotNews
    {
        public string Title { get; set; }

        public string Url { get; set; }
    }
}

最终我们通过依赖注入的方式,将抓取到的数据展示到控制台中。

HtmlAgilityPack

  • https://html-agility-pack.net/

  • https://github.com/zzzprojects/html-agility-pack

在项目中安装HtmlAgilityPack组件

Install-Package HtmlAgilityPack

这里以博客园为抓取目标,我们抓取首页的文章标题和链接。

using HtmlAgilityPack;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SpiderDemo
{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值