日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

我們一起聊聊.NET快速實現網頁數據抓取

來源: 責編: 時間:2024-05-23 08:32:08 219觀看
導讀前言今天我們來講講如何使用.NET開源(MIT License)的輕量、靈活、高性能、跨平臺的分布式網絡爬蟲框架DotnetSpider來快速實現網頁數據抓取功能。注意:為了自身安全請在國家法律允許范圍內開發網頁爬蟲功能。網頁數據抓

前言

今天我們來講講如何使用.NET開源(MIT License)的輕量、靈活、高性能、跨平臺的分布式網絡爬蟲框架DotnetSpider來快速實現網頁數據抓取功能。GBk28資訊網——每日最新資訊28at.com

注意:為了自身安全請在國家法律允許范圍內開發網頁爬蟲功能。GBk28資訊網——每日最新資訊28at.com

網頁數據抓取需求

本文我們以抓取博客園10天推薦排行榜第一頁的文章標題、文章簡介和文章地址為示例,并把抓取下來的數據保存到對應的txt文本中。GBk28資訊網——每日最新資訊28at.com

  • 請求地址:https://www.cnblogs.com/aggsite/topdiggs

圖片圖片GBk28資訊網——每日最新資訊28at.com

創建控制臺應用

創建名為DotnetSpiderExercise的控制臺應用。GBk28資訊網——每日最新資訊28at.com

圖片圖片GBk28資訊網——每日最新資訊28at.com

圖片圖片GBk28資訊網——每日最新資訊28at.com

圖片圖片GBk28資訊網——每日最新資訊28at.com

安裝DotnetSpider NuGet包

NuGet包管理器搜索:DotnetSpiderGBk28資訊網——每日最新資訊28at.com

圖片圖片GBk28資訊網——每日最新資訊28at.com

添加Serilog日志組件

NuGet包管理器搜索:Serilog.AspNetCoreGBk28資訊網——每日最新資訊28at.com

圖片圖片GBk28資訊網——每日最新資訊28at.com

添加RecommendedRankingModel

namespace DotnetSpiderExercise{    public class RecommendedRankingModel    {        /// <summary>        /// 文章標題        /// </summary>        public string ArticleTitle { get; set; }        /// <summary>        /// 文章簡介        /// </summary>        public string ArticleSummary { get; set; }        /// <summary>        /// 文章地址        /// </summary>        public string ArticleUrl { get; set; }    }}

添加RecommendedRankingSpider

網頁數據抓取的業務邏輯都在這里面。GBk28資訊網——每日最新資訊28at.com

using DotnetSpider.DataFlow.Parser;using DotnetSpider.DataFlow;using DotnetSpider.Downloader;using DotnetSpider.Http;using DotnetSpider.Scheduler.Component;using DotnetSpider.Selector;using DotnetSpider;using Microsoft.Extensions.Logging;using Microsoft.Extensions.Options;using Serilog;using DotnetSpider.Scheduler;using Microsoft.Extensions.Hosting;using System.Reflection;namespace DotnetSpiderExercise{    public class RecommendedRankingSpider : Spider    {        public RecommendedRankingSpider(IOptions<SpiderOptions> options,            DependenceServices services,            ILogger<Spider> logger) : base(options, services, logger)        {        }        public static async Task RunAsync()        {            var builder = Builder.CreateDefaultBuilder<RecommendedRankingSpider>();            builder.UseSerilog();            builder.UseDownloader<HttpClientDownloader>();            builder.UseQueueDistinctBfsScheduler<HashSetDuplicateRemover>();            await builder.Build().RunAsync();        }        protected override async Task InitializeAsync(CancellationToken stoppingToken = default)        {            //添加自定義解析            AddDataFlow(new Parser());            //使用控制臺存儲器            AddDataFlow(new ConsoleStorage());            //添加采集請求:博客園10天推薦排行榜            await AddRequestsAsync(new Request("https://www.cnblogs.com/aggsite/topdiggs")            {                //請求超時10秒                Timeout = 10000            });        }        class Parser : DataParser        {            public override Task InitializeAsync()            {                return Task.CompletedTask;            }            protected override Task ParseAsync(DataFlowContext context)            {                var recommendedRankingList = new List<RecommendedRankingModel>();                // 網頁數據解析                var number = 1;                var recommendedList = context.Selectable.SelectList(Selectors.XPath(".//article[@class='post-item']"));                foreach (var news in recommendedList)                {                    var articleTitle = news.Select(Selectors.XPath(".//a[@class='post-item-title']"))?.Value;                    var articleSummary = news.Select(Selectors.XPath(".//p[@class='post-item-summary']"))?.Value?.Replace("/n", "").Replace(" ", "");                    var articleUrl = news.Select(Selectors.XPath(".//a[@class='post-item-title']/@href"))?.Value;                    Console.WriteLine($"第{number}篇文章 標題:{articleTitle}");                    recommendedRankingList.Add(new RecommendedRankingModel                    {                        ArticleTitle = articleTitle,                        ArticleSummary = articleSummary,                        ArticleUrl = articleUrl                    });                    number++;                }                using (StreamWriter sw = new StreamWriter("RecommendedRanking.txt"))                {                    foreach (RecommendedRankingModel model in recommendedRankingList)                    {                        string line = $"文章標題:{model.ArticleTitle}/r/n文章簡介:{model.ArticleSummary}/r/n文章地址:{model.ArticleUrl}";                        sw.WriteLine(line + "/r/n ========================================================================================== /r/n");                    }                }                return Task.CompletedTask;            }        }    }}

Program執行數據抓取

namespace DotnetSpiderExercise{    public class Program    {        static async Task Main(string[] args)        {            Console.WriteLine("網頁數據抓取開始...");            await RecommendedRankingSpider.RunAsync();            Console.WriteLine("網頁數據抓取完成...");        }    }}

圖片圖片GBk28資訊網——每日最新資訊28at.com

抓取數據和頁面數據對比

抓取數據

圖片圖片GBk28資訊網——每日最新資訊28at.com

頁面數據

圖片圖片GBk28資訊網——每日最新資訊28at.com

項目源碼地址

更多項目實用功能和特性歡迎前往項目開源地址查看

本文鏈接:http://m.www897cc.com/showinfo-26-90186-0.html我們一起聊聊.NET快速實現網頁數據抓取

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 快手一季度營收 294 億元同比增長 16.6%,平均日活躍用戶達 3.94 億

下一篇: Rust 上手很難?搞懂這些知識,前端開發能快速成為 Rust 高手

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
99在线热播精品免费| 国产亚洲一区精品| 欧美a级片一区| 欧美激情欧美激情在线五月| 欧美日韩国产影院| 国产精品人人爽人人做我的可爱| 国产精品免费久久久久久| 国产欧美婷婷中文| 在线国产日韩| 中文国产一区| 久久久久久久一区| 欧美久久影院| 国产精品老女人精品视频| 国产综合色产在线精品| 亚洲精品一区二区三区福利| 一区二区三区欧美成人| 久久久99国产精品免费| 欧美精品成人在线| 国产欧美一区二区三区在线看蜜臀| 精品999成人| 亚洲视频在线观看三级| 久久国产视频网| 欧美精品免费观看二区| 国产欧美日韩精品一区| 亚洲精品免费网站| 欧美影院视频| 欧美另类综合| 狠狠色狠狠色综合人人| 亚洲无玛一区| 欧美成人高清| 国产日韩视频一区二区三区| 99精品免费网| 久久综合久久综合这里只有精品 | 亚洲午夜黄色| 久久在线免费| 欧美性开放视频| 亚洲国产精品www| 午夜视频在线观看一区| 欧美日本久久| 在线观看视频一区二区| 亚洲欧美日韩另类| 欧美精品色一区二区三区| 国内精品美女av在线播放| 亚洲视频观看| 欧美成人免费在线视频| 国产在线不卡| 亚洲欧美日韩综合aⅴ视频| 欧美激情区在线播放| 狠狠色狠狠色综合日日小说| 亚洲综合视频1区| 欧美日本国产| 亚洲激情亚洲| 久久综合精品一区| 狠狠色狠狠色综合人人| 亚洲欧美一区二区视频| 欧美午夜精品久久久久久人妖| 亚洲国产高清一区| 久久国产欧美精品| 国产精品中文在线| 亚洲午夜免费视频| 欧美日韩免费精品| 91久久精品一区二区别| 久久伊伊香蕉| 国色天香一区二区| 欧美尤物巨大精品爽| 国产精品日韩二区| 亚洲一区亚洲| 欧美午夜一区二区| 一区二区av| 欧美日韩国产在线播放| 亚洲精品中文字幕女同| 欧美高清你懂得| 亚洲黄页一区| 女人天堂亚洲aⅴ在线观看| 一区二区自拍| 久久躁日日躁aaaaxxxx| 一区二区在线视频| 久久性色av| 亚洲国产精品123| 麻豆精品一区二区综合av| 国产中文一区| 久久先锋资源| 亚洲国产三级| 欧美韩国在线| 日韩视频在线一区二区| 欧美久久一区| 在线亚洲一区| 国产精品久久久久久久7电影| 亚洲男女毛片无遮挡| 国产精品激情| 午夜精品久久久久久久久久久久| 国产欧美精品日韩精品| 久久大综合网| 伊人久久噜噜噜躁狠狠躁| 久久亚洲精品一区二区| 精品盗摄一区二区三区| 免费欧美电影| 亚洲乱码国产乱码精品精98午夜 | 久久久久久亚洲精品杨幂换脸 | 黄色成人在线| 欧美sm重口味系列视频在线观看| 91久久国产自产拍夜夜嗨| 欧美激情综合网| 日韩亚洲精品在线| 国产精品sm| 欧美在线啊v| 亚洲福利视频免费观看| 欧美日韩xxxxx| 亚洲欧美日韩另类| 国语自产精品视频在线看8查询8| 玖玖国产精品视频| 一本大道久久a久久综合婷婷| 国产精品热久久久久夜色精品三区 | 国产一区二区无遮挡| 美国十次成人| 99精品免费视频| 国产精品一区二区久久久| 久久精品一区二区三区中文字幕| 亚洲国产一成人久久精品| 欧美肉体xxxx裸体137大胆| 性久久久久久久久久久久| 一区二区视频免费完整版观看| 欧美大片免费| 亚洲你懂的在线视频| 激情久久久久| 欧美日韩精品高清| 欧美在线免费看| 亚洲精品视频啊美女在线直播| 国产精品久久久久久久久久直播 | 狠狠做深爱婷婷久久综合一区| 欧美激情导航| 性欧美xxxx大乳国产app| 亚洲国产精品va在线看黑人| 欧美午夜精品| 久久久久久久久伊人| 99在线热播精品免费99热| 国产偷国产偷亚洲高清97cao| 欧美成人精品不卡视频在线观看| 亚洲一区图片| 亚洲欧洲综合另类| 国产精品亚洲不卡a| 欧美风情在线| 欧美一区二区三区啪啪| 亚洲精品亚洲人成人网| 国产日韩一区在线| 欧美日韩色一区| 久久亚洲综合| 亚洲免费网址| 亚洲精品少妇30p| 国产综合自拍| 国产精品盗摄久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲线精品一区二区三区八戒| 亚洲电影成人| 国产视频精品网| 欧美日韩在线视频一区| 麻豆成人综合网| 性久久久久久| 正在播放亚洲一区| 亚洲国产美国国产综合一区二区| 国产欧美日韩激情| 欧美日韩视频免费播放| 蜜臀av一级做a爰片久久 | 国产精品劲爆视频| 欧美激情2020午夜免费观看| 久久精品国产精品亚洲精品| 亚洲午夜电影| 日韩亚洲不卡在线| 亚洲黄色av| 狠狠色丁香婷综合久久| 国产目拍亚洲精品99久久精品 | 亚洲日本在线观看| 一区二区三区无毛| 国产欧美一区二区色老头| 欧美午夜欧美| 欧美日韩综合精品| 欧美激情亚洲综合一区| 蜜桃精品一区二区三区| 久久精品一区二区国产| 亚洲欧美电影在线观看| 中文国产成人精品| 日韩午夜三级在线| …久久精品99久久香蕉国产| 国产一区深夜福利| 国产三区二区一区久久| 国产精品一级| 国产欧美精品一区二区三区介绍 | 国产婷婷一区二区| 国产欧美一区二区精品婷婷| 国产精品区一区| 国产精品久久久久久福利一牛影视| 欧美日韩一区在线播放| 欧美日本精品在线| 欧美激情在线| 欧美精品97| 欧美理论电影在线播放| 欧美激情在线观看| 欧美日本一区二区三区| 欧美精品九九| 欧美另类高清视频在线| 欧美日韩亚洲另类| 欧美视频成人| 国产精品久久久久久久9999| 国产精品久久久久久av福利软件|