1. 程式人生 > >基礎的爬蟲框架及運行流程

基礎的爬蟲框架及運行流程

去重復 提取 下載 存儲 兩個 負責 定義 維護 解析器

爬蟲框架的基礎和運行流程

技術分享圖片

基本的框架流程

基礎爬蟲框架主要包括五大模塊、分別為爬蟲調度器、URL管理器、HTML下載器、HTML解析器、數據存儲器。功能分析如下:

爬蟲調度器主要負責統籌其他四個模塊的協調工作。

URL管理器負責URL鏈接的管理,維護已經爬取的URL集合和未爬取的URL集合,提供獲取新URL鏈接的接口。

HTML下載器用於從URL管理器中獲取未爬取的URL鏈接並下載HTML網頁。

HTML解析器用於從HTML下載器中獲取已經下載的HTML頁面,並從中解析出新的URL鏈接交給URL管理器,解析出有效數據交給數據存儲器。

數據存儲器用於將HTML解析器解析出來的數據通過文件或者數據庫的形式存儲起來。

技術分享圖片

運行流程

1.1URL管理器

  URL管理器主要包括兩個變量,一個是已爬取URL的集合,另一個是未爬取URL的集合。采用Python中的set類型,主要是使用set的去重復功能,防止鏈接重復爬取,因為爬取連接重復時容易造成死循環。鏈接去重復在Python爬蟲開發中是必備的功能,解決方案主要有三種:

1.內存去重

2.關系數據庫去重

3.緩存數據庫去重

大型的成熟的爬蟲基本上采用緩存數據庫的去重方案,盡可能避免內存大小的限制,又比關系型數據庫去重性能高很多。由於基礎爬蟲的爬取數量較小,因此我們可以使用Python中set這個內存去重方式。

  URL管理器除了具有兩個URL集合,還需要提供一下接口,用於配合其他模塊使用,接口如下:

  判斷是否有待取的URL,方法定義為has_new_url()。

  添加新的URL到未爬取集合中,方法定義為add_new_url(url),add_new_urls(urls)。

  獲取一個未爬取的URL,方法定義為get_new_url()。

  獲取未爬取URL集合的大小,方法定義為new_url_size()。

  獲取已經爬取的URL集合的大小,方法定義為old_url_size()

技術分享圖片

技術分享圖片

1.2 HTML下載器

HTML下載器用來下載網頁,這時候需要註意網頁的編碼,以保證下載的網頁沒有亂碼。

下載器需要用到Requests模塊,裏面只需要實現一個接口即可:download(url)。

技術分享圖片

技術分享圖片

1.3 HTML解析器

這裏使用的是BeautifulSoup4進行HTML解析。需要解析的部分主要分為提取相關詞條頁面的URL和提取當前詞條的標題和摘要信息。

技術分享圖片

技術分享圖片

技術分享圖片

1.4 數據存儲器

1.5 爬蟲調度器

基礎的爬蟲框架及運行流程