爬蟲框架就是一些爬蟲項目的半成品,能夠將一些爬蟲經常使用的功能寫好。而後留下一些接口,在不一樣的爬蟲項目中,調用適合本身項目的接口,再編寫少許的代碼實現本身須要的功能。由於框架已經實現了爬蟲經常使用的功能,因此爲開發人員節省了不少精力與時間。css
這是一套比較成熟的python爬蟲框架,簡單輕巧,而且很是方便。能夠高效率的爬取Web頁面並從頁面中提取結構化的數據。Scrapy是一套成熟的框架,因此在使用時不須要擔憂收取費用的問題。其網址爲:https://scrapy.org 能夠看下他們的開發文檔html
源碼地址:https://github.com/binux/pyspider/releasespython
開發文檔地址爲:http://docs.pyspider.org/mysql
Crawley也是python開發出的爬蟲框架,該框架致力於改變人們從互聯網中提取數據的方式。特性以下:c++
基於Eventlet構建的高速網絡爬蟲框架git
能夠將數據存儲在關係型數據庫中,如mysqlgithub
能夠將爬取的數據導入爲Json、XML格式sql
支持非關係數據跨數據庫
支持命令行工具後端
可使用喜歡的工具進行數據的提取
支持使用Cookie登陸或訪問那些只有登陸才能夠訪問的網頁
簡單易學(hope so)
官網地址爲:http://project.crawley-cloud.com
相對於Scrapy框架而言,PySpider框架是一支新秀。它採用Python語言編寫,分佈式架構,支持多種數據庫後端,強大的WebUI支持腳本編輯器、任務監視器、項目管理器以及結果查看器。有以下特性:
Python腳本控制,能夠用任何你喜歡的html解析包
Web界面編寫調試腳本、起停腳本、監控執行狀態、查看活動歷史、獲取結果產出
支持RabbitMQ、Beanstalk、Redis和Kombu做爲消息隊列
支持抓取JavaScript的頁面
強大的調度控制,支持超時重爬及優先級設置
組件可替換,支持單機/分佈式部署,支持Docker部署
01 安裝Twisted模塊 計算機須要有c++ 14.0的相關支持,能夠個人網盤裏下載
02 安裝Scrapy模塊 直接安裝便可
03 安裝pywin32模塊 直接安裝便可
在指定文件夾內打開命令行,輸入: scrapy startproject scrapyDemo,便可建立一個名爲‘scrapyDemo’的項目
在建立爬蟲時,首先須要建立一個爬蟲模塊的文件,該文件須要放置在spiders文件夾中。爬蟲模塊是用於從一個網站或多個網站中爬取數據的類,它須要繼承scrapy.Spider類,下面經過一個例子,實現爬取網頁後將網頁的代碼以html文件保存到項目文件夾當中,以下:
import scrapy class QuotesSpider(scrapy.Spider): name = 'quotes' #定義爬蟲的名稱 def start_requests(self): #設置爬取目標的地址 urls=[ 'https://www.juzimi.com/article/23959', 'https://www.juzimi.com/article/23959?page=1', 'https://www.juzimi.com/article/23959?page=2' ] #獲取全部地址,有幾個地址發送幾回請求 for url in urls: #發送網絡請求 yield scrapy.Request(url=url,callback=self.parse) def parse(self, response): #獲取頁數 page=response.url.split('/')[-2] #根據頁數設置文件名稱 filename='quotes-%s.html'%page #寫入文件的模式打開文件,若是沒有該文件將建立該文件 with open(filename,'wb') as f: #向文件中寫入獲取的html代碼 f.write(response.body) #輸出保存文件的名稱 self.log('Saved file %s'%filename)
在運行Scrapy 所建立的爬蟲項目時,須要在命令窗口中輸入「scrapy crawl quotes」,其中「quotes」是本身定義的爬蟲名稱。
除了使用在命令窗口中啓動外,還能夠在程序中啓動爬蟲的API,也就是CrawlerProcess類。首先須要在CrawlerProcess初始化時傳入項目的settings信息,而後在crawl()方法中傳入爬蟲的名稱,最後經過start()方法啓動爬蟲,代碼以下:
#導入CrawlerProcess類 from scrapy.crawler import CrawlerProcess #導入獲取項目設置信息 from scrapy.utils.project import get_project_settings #程序入口 if __name__ == '__main__': #建立CrawlerProcess類對象並傳入項目設置信息參數 process=CrawlerProcess(get_project_settings()) #設置須要啓動的爬蟲名稱 process.crawl('quotes') #啓動爬蟲 process.start()
Scrapy爬蟲框架,能夠經過特定的CSS或者XPath表達式來選擇HTML文件中的某一處,而且提取出相應的數據。
一、CSS提取數據
使用CSS提取HTML文件中的某一處數據時,能夠指定HTML文件中的標籤名稱,示例代碼以下:
response.css('title').extract()