基礎的爬蟲框架及運行流程
爬蟲框架的基礎和運行流程
基本的框架流程
基礎爬蟲框架主要包括五大模塊、分別為爬蟲調度器、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 爬蟲調度器
基礎的爬蟲框架及運行流程