目前學習資料最多的爬蟲框架(工具)主要有以下幾個:
1.Scrapy
Scrapy是適用于Python的一個快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點并從頁面中提取結構化的數據。
Scrapy用途廣泛,可以用于數據挖掘、監測和自動化測試。其吸引人的地方在于它是一個框架,任何人都可以根據需求方便的修改。
Scrapy主要包括了以下組件:
- 引擎(Scrapy): 用來處理整個系統的數據流處理, 觸發事務(框架核心)
- 調度器(Scheduler): 用來接受引擎發過來的請求, 壓入隊列中, 并在引擎再次請求的時候返回. 可以想像成一個URL(抓取網頁的網址或者說是鏈接)的優先隊列, 由它來決定下一個要抓取的網址是什么, 同時去除重復的網址
- 下載器(Downloader): 用于下載網頁內容, 并將網頁內容返回給蜘蛛(Scrapy下載器是建立在twisted這個高效的異步模型上的)
- 爬蟲(Spiders): 爬蟲是主要干活的, 用于從特定的網頁中提取自己需要的信息, 即所謂的實體(Item)。用戶也可以從中提取出鏈接,讓Scrapy繼續抓取下一個頁面
- 項目管道(Pipeline): 負責處理爬蟲從網頁中抽取的實體,主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息。當頁面被爬蟲解析后,將被發送到項目管道,并經過幾個特定的次序處理數據。
- 下載器中間件(Downloader Middlewares): 位于Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請求及響應。
- 爬蟲中間件(Spider Middlewares): 介于Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應輸入和請求輸出。
- 調度中間件(Scheduler Middewares): 介于Scrapy引擎和調度之間的中間件,從Scrapy引擎發送到調度的請求和響應。
2.PySpider
PySpider是binux做的一個爬蟲架構的開源化實現。主要的功能是:
- 抓取、更新調度多站點的特定的頁面
- 需要對頁面進行結構化信息提取
- 靈活可擴展,穩定可監控
而這也是絕大多數python爬蟲的需求 —— 定向抓取,結構化解析。但是面對結構迥異的各種網站,單一的抓取模式并不一定能滿足,靈活地抓取控制是必須的。為了達到這個目的,單純的配置文件往往不夠靈活,于是,通過腳本去控制抓取是最后的選擇。
而去重調度,隊列,抓取,異常處理,監控等功能作為框架,提供給抓取腳本,并保證靈活性。最后加上web的編輯調試環境,以及web任務監控,即成為了這套框架。
3.Requests
Requests的宣傳語:“Requests是一個優雅而簡單的 Python HTTP 庫,專為人類構建。”,看上去就很強大。
主要的功能是:
- 保持活動和連接池
- 國際域名和 URL
- 具有 Cookie 持久性的會話
- 瀏覽器 SSL 驗證
- 自動內容解碼
- 基本/摘要認證
- 優雅的鍵/值 Cookie
- 自動減壓
- Unicode 響應體
- HTTP(S) 代理支持
- 多部分文件上傳
- 流式下載
- 連接超時
- 分塊請求
- .netrc支持
4.Selenium
嚴格說來,Selenium是一套完整的Web應用程序測試系統,它包含了測試的錄制(Selenium IDE)、編寫及運行(Selenium Remote Control)和測試的并行處理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript編寫,因此可運行于任何支持JavaScript的瀏覽器上。Selenium Core由一種指定格式的HTML文件驅動,在一定程度上增強了測試套件(Test Suite)的可讀性。Selenium Remote Control允許測試人員使用常見的語言(自然包括C#等.NET語言)編寫測試代碼,并支持不同操作系統下的各種主流瀏覽器。Selenium Grid的作用是將測試分發至多臺機器,這樣便可大大加快測試速度。與WatiN相同,Selenium也是一款同樣使用Apache License 2.0協議發布的開源框架。
5.DrissionPage
合并Requests和Selenium兩者的大部分功能,還以網頁為單位封裝了常用功能,簡化了 Selenium的操作和語句,在用于網頁自動化操作時,減少考慮細節,專注功能實現,使用更方便。一切從簡,盡量提供簡單直接的使用方法,對新手更友好。
特性
- 代碼高度集成,以簡潔的代碼為第一追求。
- 頁面對象可在 Requests和Selenium模式間任意切換,保留登錄狀態。
- 極簡單但強大的元素定位語法,支持鏈式操作,代碼極其簡潔。
- 兩種模式提供一致的選擇 API,使用體驗一致。
- 人性化設計,集成眾多實用功能,大大降低開發工作量。
綜上,Scrapy和PySpider構建系統性的數據采集比較好,而我們只是單一的獲取幾個單一的股票數據,從初學者的角度出發還是選用Selenium來實現需求。
一、安裝Selenium
pip install selenium
二、選擇瀏覽器驅動
Selenium 自己不帶瀏覽器,不支持瀏覽器的功能,它需要與第三方瀏覽器結合在一起才能使用,這里我們選擇谷歌瀏覽器驅動。下載地址:http://chromedriver.storage.googleapis.com/index.html。注意下載與自己電腦安裝的谷歌瀏覽器相同的版本,并配置環境變量。
三、獲取個股人氣榜數據
# -*- coding: utf-8 -*-
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://guba.eastmoney.com/rank/')
print(browser.page_source) # browser.page_source是獲取網頁的全部html
browser.close()
來源:生活資訊網
評論前必須登錄!
立即登錄 注冊