日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dotNetSpider 手记

發布時間:2024/9/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dotNetSpider 手记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

準備工作:

  從github上download工程。

  安裝VS2017。

  安裝 .net core 2.0。

  編譯通過。

基礎架構:

  調度器 Scheduler 從根site開始,向 Downloader 分配請求任務。

  Downloader 根據分配到的請求任務,向目標site 下載 page,并交由 PageProcessor 進行頁面處理。

  PageProcessor 將處理的結果推入 Pipeline,將解析出的新的鏈接,推入 Scheduler。

  循環直至 Scheduler 沒有新的請求可以處理。

Spider.Create:

  設定根訪問節點、唯一身份標識、請求調度器 Scheduler,頁面處理器 PageProcessor。

  以給出的 Sample 樣例中,遍歷 cnblog 站點為例進行解析:

    Scheduler 是?QueueDuplicateRemovedScheduler。就是一個存放 Request 的隊列。

    PageProcessor 是默認的?DefaultPageProcessor。

    這里涉及到 XPath 的知識,需要快速了解。

  XPath:XPath 使用路徑表達式在 XML 文檔中進行導航,選取 XML 文檔中的節點或者節點集。

  主要知識點見:http://www.runoob.com/xpath/xpath-syntax.html

頁面處理流程 BasePageProcessor.Process:

public void Process(Page page){bool isTarget = true;if (_targetUrlPatterns.Count > 0 && !_targetUrlPatterns.Contains(null)){foreach (var regex in _targetUrlPatterns){isTarget = regex.IsMatch(page.Url);if (isTarget){break;}}}if (!isTarget){return;}Handle(page);page.ResultItems.IsSkip = page.ResultItems.Results.Count == 0;if (!page.SkipExtractTargetUrls){ExtractUrls(page);}}

  在 Sample 中,調用的是 DefaultPageProcessor 提供的 hanlde:

page.AddResultItem("title", page.Selectable.XPath("//title").GetValue());page.AddResultItem("html", page.Content);

  默認的頁面處理,是找出 “title” 元素,以及整個 html 內容。

  接著在下載好的頁面內容中,查找更多的 url。

總結

以上是生活随笔為你收集整理的dotNetSpider 手记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。