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

當(dāng)前位置:首頁 > 科技  > 軟件

我們一起聊聊.NET快速實現(xiàn)網(wǎng)頁數(shù)據(jù)抓取

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

前言

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

注意:為了自身安全請在國家法律允許范圍內(nèi)開發(fā)網(wǎng)頁爬蟲功能。yZt28資訊網(wǎng)——每日最新資訊28at.com

網(wǎng)頁數(shù)據(jù)抓取需求

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

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

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建控制臺應(yīng)用

創(chuàng)建名為DotnetSpiderExercise的控制臺應(yīng)用。yZt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

安裝DotnetSpider NuGet包

NuGet包管理器搜索:DotnetSpideryZt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

添加Serilog日志組件

NuGet包管理器搜索:Serilog.AspNetCoreyZt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

添加RecommendedRankingModel

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

添加RecommendedRankingSpider

網(wǎng)頁數(shù)據(jù)抓取的業(yè)務(wù)邏輯都在這里面。yZt28資訊網(wǎng)——每日最新資訊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>();                // 網(wǎng)頁數(shù)據(jù)解析                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}篇文章 標(biāo)題:{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 = $"文章標(biāo)題:{model.ArticleTitle}/r/n文章簡介:{model.ArticleSummary}/r/n文章地址:{model.ArticleUrl}";                        sw.WriteLine(line + "/r/n ========================================================================================== /r/n");                    }                }                return Task.CompletedTask;            }        }    }}

Program執(zhí)行數(shù)據(jù)抓取

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

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

抓取數(shù)據(jù)和頁面數(shù)據(jù)對比

抓取數(shù)據(jù)

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

頁面數(shù)據(jù)

圖片圖片yZt28資訊網(wǎng)——每日最新資訊28at.com

項目源碼地址

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

本文鏈接:http://www.www897cc.com/showinfo-26-90186-0.html我們一起聊聊.NET快速實現(xiàn)網(wǎng)頁數(shù)據(jù)抓取

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

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

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

標(biāo)簽:
  • 熱門焦點
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機(jī)潮已經(jīng)過去,最明顯的肯定就是大內(nèi)存和存儲的機(jī)型了,另外部分中端機(jī)也取消了屏幕塑料支架
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優(yōu)惠,到手價12999元,比發(fā)布價便宜了7000元,在大屏電視市場開卷。據(jù)了解,Redmi MAX 100
  • 8月總票房已突破10億!《封神》第一:口碑已經(jīng)成了

    8月5日消息,據(jù)燈塔專業(yè)版數(shù)據(jù),截至8月5日9時35分,8月總票房(含預(yù)售)已突破10億。其中,《封神》以大比分的優(yōu)勢領(lǐng)先。根據(jù)官方消息,目前該片總票房已經(jīng)超過14.
  • SpringBoot中使用Cache提升接口性能詳解

    環(huán)境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對 Spring 應(yīng)用程序提供了透明式添加緩存的支持。和事務(wù)支持一樣,抽象緩存允許一致地使用各
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權(quán)的大型語言模型Llama 2。這是一項非常重要的進(jìn)展:Llama 2可免費用于研究和商業(yè)用途。(幾小時前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為Lla
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當(dāng)時用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,后者用來定位泄露代碼,后面有朋友反
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設(shè)計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了&mdash;&mdash;貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • iQOO Neo8 Pro即將開售:到手價3099元起 安卓性能最強(qiáng)旗艦

    5月23日,iQOO如期舉行了新品發(fā)布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標(biāo)準(zhǔn)版搭載高通驍龍8+,而Pro版更
  • 微軟發(fā)布Windows 11新版 引入全新任務(wù)欄狀態(tài)

    近日,微軟發(fā)布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務(wù)欄等,系統(tǒng)更流暢了。更新中,Windows 11加入了專門針對平板優(yōu)化的任務(wù)欄
Top 主站蜘蛛池模板: 康马县| 新巴尔虎左旗| 大悟县| 乌鲁木齐县| 陆河县| 昌都县| 娄烦县| 高青县| 綦江县| 城固县| 神木县| 乐平市| 新绛县| 鹰潭市| 浙江省| 新闻| 全南县| 辽阳市| 富顺县| 瑞昌市| 炎陵县| 庄河市| 周口市| 房山区| 界首市| 西华县| 南漳县| 武宣县| 淳化县| 阿图什市| 集安市| 孝昌县| 射阳县| 夏邑县| 万年县| 海安县| 合阳县| 锡林浩特市| 太康县| 临洮县| 清远市|