基本的框架流程數據庫
基礎爬蟲框架主要包括五大模塊、分別爲爬蟲調度器、URL管理器、HTML下載器、HTML解析器、數據存儲器。功能分析以下:緩存
爬蟲調度器主要負責統籌其餘四個模塊的協調工做。框架
URL管理器負責URL連接的管理,維護已經爬取的URL集合和未爬取的URL集合,提供獲取新URL連接的接口。性能
HTML下載器用於從URL管理器中獲取未爬取的URL連接並下載HTML網頁。編碼
HTML解析器用於從HTML下載器中獲取已經下載的HTML頁面,並從中解析出新的URL連接交給URL管理器,解析出有效數據交給數據存儲器。url
數據存儲器用於將HTML解析器解析出來的數據經過文件或者數據庫的形式存儲起來。3d
運行流程blog
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()
HTML下載器用來下載網頁,這時候須要注意網頁的編碼,以保證下載的網頁沒有亂碼。
下載器須要用到Requests模塊,裏面只須要實現一個接口便可:download(url)。
這裏使用的是BeautifulSoup4進行HTML解析。須要解析的部分主要分爲提取相關詞條頁面的URL和提取當前詞條的標題和摘要信息。