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

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

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

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

前言

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

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

網頁數據抓取需求

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

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

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

創建控制臺應用

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

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

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

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

安裝DotnetSpider NuGet包

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

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

添加Serilog日志組件

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

圖片圖片SoA28資訊網——每日最新資訊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

網頁數據抓取的業務邏輯都在這里面。SoA28資訊網——每日最新資訊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("網頁數據抓取完成...");        }    }}

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

抓取數據和頁面數據對比

抓取數據

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

頁面數據

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

項目源碼地址

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

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

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

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

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

標簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • iPhone賣不動了!蘋果股價創年內最大日跌幅:市值一夜蒸發萬億元

    8月5日消息,今天凌晨美股三大指數高開低走集體收跌,道指跌0.41%;納指跌0.36%;標普500指數跌0.52%。熱門科技股也都變化極大,其中蘋果報181.99美元,跌4.8%,創
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 騰訊蓋樓,字節拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之&ldquo;想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!&rdquo;曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點商業作者:楊銘在淘寶購買珠寶玉石后,因為保證金不夠賠付,店鋪關閉,退貨退款難、維權無門的比比皆是。&ldquo;提供相關產品鑒定證書,支持全國復檢,可以30天無理由退換貨。&
  • 蘋果、三星、惠普等暫停向印度出口筆記本和平板電腦

    集微網消息,據彭博社報道,在8月3日印度突然禁止在沒有許可證的情況下向印度進口電腦/平板及顯示器等產品后,蘋果、三星電子和惠普等大公司暫停向印度
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 上海舉辦人工智能大會活動,建設人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術、新產品、新應用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發展盛典人工
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主&ldquo;七王&rdquo;在群里介紹一些刷單賺
Top 主站蜘蛛池模板: 湘阴县| 广水市| 新民市| 瑞昌市| 黑龙江省| 中阳县| 禹城市| 神农架林区| 新宁县| 大庆市| 澄城县| 灵山县| 绥滨县| 鹿泉市| 商洛市| 景宁| 阳东县| 刚察县| 无为县| 石泉县| 陇西县| 宜阳县| 多伦县| 嘉义县| 奇台县| 彰武县| 武川县| 衡东县| 甘孜| 固始县| 聂荣县| 上饶县| 如东县| 英吉沙县| 绥芬河市| 唐河县| 新河县| 万全县| 神池县| 厦门市| 三台县|