搜狗词库爬虫(2):基础爬虫框架的运行流程
系列目錄:
搜狗詞庫爬蟲(1):基礎爬蟲架構和爬取詞庫分類
項目Github地址:github.com/padluo/sogo…
各模塊對應的內容如下:
getCategory.py,提取詞庫分類ID和名字,以字典形式返回。
SpiderMan.py,爬蟲調度器。
UrlManager.py,URL管理器。
HtmlDownloader.py,網頁下載器。
HtmlParser.py,網頁解析器。
DataOutput.py,數據存儲器。
SogouDictParser.py,搜狗詞庫解析器。
基礎爬蟲框架的動態運行流程
URL管理器
URL管理器UrlManager.py管理待爬取URL集合和已爬取URL集合,防止鏈接重復爬取,因為鏈接重復時容易造成死循環,防止循環抓取(如兩個網頁相互引用造成死循環)。URL管理器實現方式主要有三種:內存去重、關系數據庫去重、緩存數據庫去重。大型爬蟲基本上采用緩存數據庫的去重方案,搜狗詞庫爬蟲的爬取數量較小,因此采用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,獲取已經爬取的URL集合的大小。
網頁下載器
網頁下載器HtmlDownloader.py用來下載網頁,需要注意網頁的編碼,下載器用到Requests模塊,實現一個接口download(url)。
網頁解析器
網頁解析器HtmlParser.py主要提供一個parser對外接口,輸入參數為當前頁面的URL和HTML下載器返回的網頁內容。內部實現兩個功能,一是解析出新的URL鏈接交給URL管理器,二是解析出有效數據交給數據存儲器。
因為詞庫文件的數量較多,所以某一類的詞庫往往會分多個頁面來展示(常見的如通過點擊上一頁、下一頁跳轉),所以要完整下載者一類的詞庫必須遍歷這一類詞庫的所有頁面。
解析出新的URL鏈接交給數據存儲器,通過正則表達式分析當前訪問頁面的源碼,獲取當前頁面可以跳轉到的其他頁面的URL,將這些URL交給URL管理器。
解析出有效數據交給URL管理器,通過正則表達式獲取分析當前訪問的頁面源碼,獲取可以下載的詞庫文件的URL,存入一個臨時的列表List中,交給數據存儲器。
數據存儲器
數據存儲器DataOutput.py主要包括兩個方法:store_data(data)用于將解析出來的詞庫文件的URL存儲到內存中,并做去重工作,output_html則逐一下載各個詞庫文件并按分類在本地存儲。
您可能還想看
Hadoop/CDH
Hadoop實戰(1)_阿里云搭建Hadoop2.x的偽分布式環境
Hadoop實戰(2)_虛擬機搭建Hadoop的全分布模式
Hadoop實戰(3)_虛擬機搭建CDH的全分布模式
Hadoop實戰(4)_Hadoop的集群管理和資源分配
Hadoop實戰(5)_Hadoop的運維經驗
Hadoop實戰(6)_搭建Apache Hadoop的Eclipse開發環境
Hadoop實戰(7)_Apache Hadoop安裝和配置Hue
Hadoop實戰(8)_CDH添加Hive服務及Hive基礎
Hadoop實戰(9)_Hive進階及UDF開發
Hadoop實戰(10)_Sqoop import與抽取框架封裝
微信公眾號「數據分析」,分享數據科學家的自我修養,既然遇見,不如一起成長。
轉載請注明:轉載自微信公眾號「數據分析」
讀者交流電報群:
https://t.me/sspadluo
轉載于:https://juejin.im/post/5a640e4cf265da3e283a1ac5
總結
以上是生活随笔為你收集整理的搜狗词库爬虫(2):基础爬虫框架的运行流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 开发环境搭建
- 下一篇: sass的高级用法