網路爬蟲開發常用框架

weixin_30527551發表於2019-02-27

  爬蟲框架就是一些爬蟲專案的半成品,可以將一些爬蟲常用的功能寫好。然後留下一些介面,在不同的爬蟲專案中,呼叫適合自己專案的介面,再編寫少量的程式碼實現自己需要的功能。因為框架已經實現了爬蟲常用的功能,所以為開發人員節省了很多精力與時間。

1、Scrapy爬蟲框架

  這是一套比較成熟的python爬蟲框架,簡單輕巧,並且非常方便。可以高效率的爬取Web頁面並從頁面中提取結構化的資料。Scrapy是一套成熟的框架,所以在使用時不需要擔心收取費用的問題。其網址為:https://scrapy.org      可以看下他們的開發文件

  原始碼地址:https://github.com/binux/pyspider/releases

  開發文件地址為:http://docs.pyspider.org/

2、Crawley 爬蟲框架

  Crawley也是python開發出的爬蟲框架,該框架致力於改變人們從網際網路中提取資料的方式。特性如下:

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

    可以將資料儲存在關係型資料庫中,如mysql

    可以將爬取的資料匯入為Json、XML格式

    支援非關係資料跨

    支援命令列工具

    可以使用喜歡的工具進行資料的提取

    支援使用Cookie登入或訪問那些只有登入才可以訪問的網頁

    簡單易學(hope so)

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

3、PySpider爬蟲框架

  相對於Scrapy框架而言,PySpider框架是一支新秀。它採用Python語言編寫,分散式架構,支援多種資料庫後端,強大的WebUI支援指令碼編輯器、任務監視器、專案管理器以及結果檢視器。有如下特性:

  Python指令碼控制,可以用任何你喜歡的html解析包

  Web介面編寫除錯指令碼、起停指令碼、監控執行狀態、檢視活動歷史、獲取結果產出

  支援RabbitMQ、Beanstalk、Redis和Kombu作為訊息佇列

  支援抓取JavaScript的頁面

  強大的排程控制,支援超時重爬及優先順序設定

  元件可替換,支援單機/分散式部署,支援Docker部署

4、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檔案中的某一處,並且提取出相應的資料。

  1、CSS提取資料

  使用CSS提取HTML檔案中的某一處資料時,可以指定HTML檔案中的標籤名稱,示例程式碼如下:

response.css('title').extract()

 

轉載於:https://www.cnblogs.com/start20180703/p/10442587.html

相關文章