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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Web Magic 总体架构

發布時間:2023/12/1 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web Magic 总体架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.2 總體架構

WebMagic的結構分為Downloader、PageProcessor、Scheduler、Pipeline四大組件,并由Spider將它們彼此組織起來。這四大組件對應爬蟲生命周期中的下載、處理、管理和持久化等功能。WebMagic的設計參考了Scapy,但是實現方式更Java化一些。

而Spider則將這幾個組件組織起來,讓它們可以互相交互,流程化的執行,可以認為Spider是一個大的容器,它也是WebMagic邏輯的核心。

WebMagic總體架構圖如下:

1.2.1 WebMagic的四個組件

1.Downloader

Downloader負責從互聯網上下載頁面,以便后續處理。WebMagic默認使用了Apache HttpClient作為下載工具。

2.PageProcessor

PageProcessor負責解析頁面,抽取有用信息,以及發現新的鏈接。WebMagic使用Jsoup作為HTML解析工具,并基于其開發了解析XPath的工具Xsoup。

在這四個組件中,PageProcessor對于每個站點每個頁面都不一樣,是需要使用者定制的部分。

3.Scheduler

Scheduler負責管理待抓取的URL,以及一些去重的工作。WebMagic默認提供了JDK的內存隊列來管理URL,并用集合來進行去重。也支持使用Redis進行分布式管理。

除非項目有一些特殊的分布式需求,否則無需自己定制Scheduler。

4.Pipeline

Pipeline負責抽取結果的處理,包括計算、持久化到文件、數據庫等。WebMagic默認提供了“輸出到控制臺”和“保存到文件”兩種結果處理方案。

Pipeline定義了結果保存的方式,如果你要保存到指定數據庫,則需要編寫對應的Pipeline。對于一類需求一般只需編寫一個Pipeline。

1.2.2 用于數據流轉的對象

1. Request

Request是對URL地址的一層封裝,一個Request對應一個URL地址。

它是PageProcessor與Downloader交互的載體,也是PageProcessor控制Downloader唯一方式。

除了URL本身外,它還包含一個Key-Value結構的字段extra。你可以在extra中保存一些特殊的屬性,然后在其他地方讀取,以完成不同的功能。例如附加上一個頁面的一些信息等。

2. Page

Page代表了從Downloader下載到的一個頁面——可能是HTML,也可能是JSON或者其他文本格式的內容。

Page是WebMagic抽取過程的核心對象,它提供一些方法可供抽取、結果保存等。在第四章的例子中,我們會詳細介紹它的使用。

3. ResultItems

ResultItems相當于一個Map,它保存PageProcessor處理的結果,供Pipeline使用。它的API與Map很類似,值得注意的是它有一個字段skip,若設置為true,則不應被Pipeline處理。

1.2.3 控制爬蟲運轉的引擎--Spider

Spider是WebMagic內部流程的核心。Downloader、PageProcessor、Scheduler、Pipeline都是Spider的一個屬性,這些屬性是可以自由設置的,通過設置這個屬性可以實現不同的功能。Spider也是WebMagic操作的入口,它封裝了爬蟲的創建、啟動、停止、多線程等功能。下面是一個設置各個組件,并且設置多線程和啟動的例子。詳細的Spider設置請看第四章——爬蟲的配置、啟動和終止。

1 public static void main(String[] args) { 2 Spider.create(new GithubRepoPageProcessor()) 3 //從https://github.com/code4craft開始抓 4 .addUrl("https://github.com/code4craft") 5 //設置Scheduler,使用Redis來管理URL隊列 6 .setScheduler(new RedisScheduler("localhost")) 7 //設置Pipeline,將結果以json方式保存到文件 8 .addPipeline(new JsonFilePipeline("D:\\data\\webmagic")) 9 //開啟5個線程同時執行 10 .thread(5) 11 //啟動爬蟲 12 .run(); 13 }

?

1.2.4 快速上手

上面介紹了很多組件,但是其實使用者需要關心的沒有那么多,因為大部分模塊WebMagic已經提供了默認實現。

一般來說,對于編寫一個爬蟲,PageProcessor是需要編寫的部分,而Spider則是創建和控制爬蟲的入口。在第四章中,我們會介紹如何通過定制PageProcessor來編寫一個爬蟲,并通過Spider來啟動。

轉載于:https://www.cnblogs.com/thomas12112406/p/6560320.html

總結

以上是生活随笔為你收集整理的Web Magic 总体架构的全部內容,希望文章能夠幫你解決所遇到的問題。

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