1. 程式人生 > >Python爬蟲學習(二)---- 完整的爬蟲體系

Python爬蟲學習(二)---- 完整的爬蟲體系

完整的爬蟲體系

上節已經對爬蟲有了簡單的瞭解和實踐,接下來我通過慕課網的途徑學習到了一個相對完整的框架。為了記錄,特將此經除錯體系置於此,互相學習。

平臺

MacOS 10.13.3
PyCharm 2016
Python3.6

主函式

Python 中的主函式與C 或者 java 都相類似,主要的作用就是形成一個總體概括性的大範圍,讓程式設計邏輯性更加清晰。

主函式如下,難點我已註釋,不懂請追問,我加以修改。
相關實現函式請關注爬蟲後續文章或訪問我的Github:https://github.com/Spacider/Spider

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
from Baike_Spaider import html_downloader from Baike_Spaider import html_outputer from Baike_Spaider import html_paraser from Baike_Spaider import url_manager __author__ = 'Gary' # 爬蟲主函式 class SpiderMain(object): def __init__(self): # url管理器 self.urls = url_manager.UrlManager() # 下載器
self.downloader = html_downloader.HtmlDownloader() # 解析器 self.paraser = html_paraser.HtmlParaser() # 輸出器 self.outputer = html_outputer.HtmlOutputer() def craw(self, root_url): count = 1 # 新增入口url self.urls.add_new_url(root_url) # 如果有新的url地址
while self.urls.has_new_url(): try: # 從網頁url管理器取出 new_url = self.urls.get_new_url() # 輸入解析的是第幾個url print('craw %d : %s' % (count, new_url)) # 下載對應的頁面 html_cont = self.downloader.download(new_url) # 執行介面的解析,得到新的url資料 new_urls, new_data = self.paraser.parse(new_url, html_cont) # 將新的url補充進url資料 self.urls.add_new_urls(new_urls) # 收集新的資料 self.outputer.collect_data(new_data) if count >= 200: break count +=1 except: print('craw failed') # 輸出資料 self.outputer.output_html() if __name__ == '__main__': # 輸入待抓取url root_url = 'https://baike.baidu.com/item/Python' # 創造一個Spider obj_spider = SpiderMain() obj_spider.craw(root_url)