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 手记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DotnetSpider (二) Dow
- 下一篇: 鸡蛋清敷脸有什么好处多久一次(鸡蛋清敷脸