網絡爬蟲開發經常使用框架

  爬蟲框架就是一些爬蟲項目的半成品,能夠將一些爬蟲經常使用的功能寫好。而後留下一些接口,在不一樣的爬蟲項目中,調用適合本身項目的接口,再編寫少許的代碼實現本身須要的功能。由於框架已經實現了爬蟲經常使用的功能,因此爲開發人員節省了不少精力與時間。css

一、Scrapy爬蟲框架

  這是一套比較成熟的python爬蟲框架,簡單輕巧,而且很是方便。能夠高效率的爬取Web頁面並從頁面中提取結構化的數據。Scrapy是一套成熟的框架,因此在使用時不須要擔憂收取費用的問題。其網址爲:https://scrapy.org      能夠看下他們的開發文檔html

  源碼地址:https://github.com/binux/pyspider/releasespython

  開發文檔地址爲:http://docs.pyspider.org/mysql

二、Crawley 爬蟲框架

  Crawley也是python開發出的爬蟲框架,該框架致力於改變人們從互聯網中提取數據的方式。特性以下:c++

    基於Eventlet構建的高速網絡爬蟲框架git

    能夠將數據存儲在關係型數據庫中,如mysqlgithub

    能夠將爬取的數據導入爲Json、XML格式sql

    支持非關係數據跨數據庫

    支持命令行工具後端

    可使用喜歡的工具進行數據的提取

    支持使用Cookie登陸或訪問那些只有登陸才能夠訪問的網頁

    簡單易學(hope so)

  官網地址爲:http://project.crawley-cloud.com

三、PySpider爬蟲框架

  相對於Scrapy框架而言,PySpider框架是一支新秀。它採用Python語言編寫,分佈式架構,支持多種數據庫後端,強大的WebUI支持腳本編輯器、任務監視器、項目管理器以及結果查看器。有以下特性:

  Python腳本控制,能夠用任何你喜歡的html解析包

  Web界面編寫調試腳本、起停腳本、監控執行狀態、查看活動歷史、獲取結果產出

  支持RabbitMQ、Beanstalk、Redis和Kombu做爲消息隊列

  支持抓取JavaScript的頁面

  強大的調度控制,支持超時重爬及優先級設置

  組件可替換,支持單機/分佈式部署,支持Docker部署

四、Scrapy 爬蟲框架的使用

(1)搭建

  01 安裝Twisted模塊  計算機須要有c++ 14.0的相關支持,能夠個人網盤裏下載

  02 安裝Scrapy模塊  直接安裝便可

  03 安裝pywin32模塊  直接安裝便可

(2)建立Scrapy項目

  在指定文件夾內打開命令行,輸入:   scrapy startproject scrapyDemo,便可建立一個名爲‘scrapyDemo’的項目 

(3)建立爬蟲

  在建立爬蟲時,首先須要建立一個爬蟲模塊的文件,該文件須要放置在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()

 

(4)獲取數據

  Scrapy爬蟲框架,能夠經過特定的CSS或者XPath表達式來選擇HTML文件中的某一處,而且提取出相應的數據。

  一、CSS提取數據

  使用CSS提取HTML文件中的某一處數據時,能夠指定HTML文件中的標籤名稱,示例代碼以下:

response.css('title').extract()
相關文章
相關標籤/搜索