'教你實現python爬蟲平臺的架構和框架的選型'

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

教你實現python爬蟲平臺的架構和框架的選型

在運行時,可以通過-a 指定自定義的參數,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest

在這條執行命令中,我們指定了一個cc參數等於scrapttest,在Pipeline

中,我們可以通過代碼獲取這個參數

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

教你實現python爬蟲平臺的架構和框架的選型

在運行時,可以通過-a 指定自定義的參數,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest

在這條執行命令中,我們指定了一個cc參數等於scrapttest,在Pipeline

中,我們可以通過代碼獲取這個參數

教你實現python爬蟲平臺的架構和框架的選型

在代碼中,我們通過spider.cc 就可以獲取到這個參數的值,然後在運行日誌可以看到,我們打印出來了這個參數值。

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

教你實現python爬蟲平臺的架構和框架的選型

在運行時,可以通過-a 指定自定義的參數,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest

在這條執行命令中,我們指定了一個cc參數等於scrapttest,在Pipeline

中,我們可以通過代碼獲取這個參數

教你實現python爬蟲平臺的架構和框架的選型

在代碼中,我們通過spider.cc 就可以獲取到這個參數的值,然後在運行日誌可以看到,我們打印出來了這個參數值。

教你實現python爬蟲平臺的架構和框架的選型

通過這種方式,我們就解決了爬蟲運行時,參數的的動態傳遞問題。

6、 爬蟲部署到服務端

安裝scrapyd

pip install scrapyd 

安裝scrapyd-deploy

pip install scrapyd-client

scrapyd 是scrapy的爬蟲服務端,安裝完成後,執行scrapyd可以啟動服務端。

啟動時默認端口為6800

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

教你實現python爬蟲平臺的架構和框架的選型

在運行時,可以通過-a 指定自定義的參數,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest

在這條執行命令中,我們指定了一個cc參數等於scrapttest,在Pipeline

中,我們可以通過代碼獲取這個參數

教你實現python爬蟲平臺的架構和框架的選型

在代碼中,我們通過spider.cc 就可以獲取到這個參數的值,然後在運行日誌可以看到,我們打印出來了這個參數值。

教你實現python爬蟲平臺的架構和框架的選型

通過這種方式,我們就解決了爬蟲運行時,參數的的動態傳遞問題。

6、 爬蟲部署到服務端

安裝scrapyd

pip install scrapyd 

安裝scrapyd-deploy

pip install scrapyd-client

scrapyd 是scrapy的爬蟲服務端,安裝完成後,執行scrapyd可以啟動服務端。

啟動時默認端口為6800

教你實現python爬蟲平臺的架構和框架的選型

啟動後,通過瀏覽器可以訪問http://localhost:6800/

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

教你實現python爬蟲平臺的架構和框架的選型

在運行時,可以通過-a 指定自定義的參數,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest

在這條執行命令中,我們指定了一個cc參數等於scrapttest,在Pipeline

中,我們可以通過代碼獲取這個參數

教你實現python爬蟲平臺的架構和框架的選型

在代碼中,我們通過spider.cc 就可以獲取到這個參數的值,然後在運行日誌可以看到,我們打印出來了這個參數值。

教你實現python爬蟲平臺的架構和框架的選型

通過這種方式,我們就解決了爬蟲運行時,參數的的動態傳遞問題。

6、 爬蟲部署到服務端

安裝scrapyd

pip install scrapyd 

安裝scrapyd-deploy

pip install scrapyd-client

scrapyd 是scrapy的爬蟲服務端,安裝完成後,執行scrapyd可以啟動服務端。

啟動時默認端口為6800

教你實現python爬蟲平臺的架構和框架的選型

啟動後,通過瀏覽器可以訪問http://localhost:6800/

教你實現python爬蟲平臺的架構和框架的選型

服務端啟動後,就可以通過scrapyd-deploy 來提交部署開發好的爬蟲了。

scrapyd-deploy <target> -p <project> --version <version>

部署成功後,就可以看到自己的爬蟲項目了

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

教你實現python爬蟲平臺的架構和框架的選型

在運行時,可以通過-a 指定自定義的參數,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest

在這條執行命令中,我們指定了一個cc參數等於scrapttest,在Pipeline

中,我們可以通過代碼獲取這個參數

教你實現python爬蟲平臺的架構和框架的選型

在代碼中,我們通過spider.cc 就可以獲取到這個參數的值,然後在運行日誌可以看到,我們打印出來了這個參數值。

教你實現python爬蟲平臺的架構和框架的選型

通過這種方式,我們就解決了爬蟲運行時,參數的的動態傳遞問題。

6、 爬蟲部署到服務端

安裝scrapyd

pip install scrapyd 

安裝scrapyd-deploy

pip install scrapyd-client

scrapyd 是scrapy的爬蟲服務端,安裝完成後,執行scrapyd可以啟動服務端。

啟動時默認端口為6800

教你實現python爬蟲平臺的架構和框架的選型

啟動後,通過瀏覽器可以訪問http://localhost:6800/

教你實現python爬蟲平臺的架構和框架的選型

服務端啟動後,就可以通過scrapyd-deploy 來提交部署開發好的爬蟲了。

scrapyd-deploy <target> -p <project> --version <version>

部署成功後,就可以看到自己的爬蟲項目了

教你實現python爬蟲平臺的架構和框架的選型

7、 創建服務端的爬蟲任務

如果是在linux命令下,可以通過

curl http://localhost:6800/schedule.json -d project= zj_scrapy -d spider=sjqq

來提交一個爬蟲任務,提交完成後,會返回提交的任務狀態,這個其實就是提交了一個http請求

{

"node_name": "ZJPH-0321",

"status": "ok",

"jobid": "dd7f10aca76e11e99b656c4b90156b7e"

}

提交成功後,可以在瀏覽器的job下面看到任務的執行情況

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

教你實現python爬蟲平臺的架構和框架的選型

在運行時,可以通過-a 指定自定義的參數,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest

在這條執行命令中,我們指定了一個cc參數等於scrapttest,在Pipeline

中,我們可以通過代碼獲取這個參數

教你實現python爬蟲平臺的架構和框架的選型

在代碼中,我們通過spider.cc 就可以獲取到這個參數的值,然後在運行日誌可以看到,我們打印出來了這個參數值。

教你實現python爬蟲平臺的架構和框架的選型

通過這種方式,我們就解決了爬蟲運行時,參數的的動態傳遞問題。

6、 爬蟲部署到服務端

安裝scrapyd

pip install scrapyd 

安裝scrapyd-deploy

pip install scrapyd-client

scrapyd 是scrapy的爬蟲服務端,安裝完成後,執行scrapyd可以啟動服務端。

啟動時默認端口為6800

教你實現python爬蟲平臺的架構和框架的選型

啟動後,通過瀏覽器可以訪問http://localhost:6800/

教你實現python爬蟲平臺的架構和框架的選型

服務端啟動後,就可以通過scrapyd-deploy 來提交部署開發好的爬蟲了。

scrapyd-deploy <target> -p <project> --version <version>

部署成功後,就可以看到自己的爬蟲項目了

教你實現python爬蟲平臺的架構和框架的選型

7、 創建服務端的爬蟲任務

如果是在linux命令下,可以通過

curl http://localhost:6800/schedule.json -d project= zj_scrapy -d spider=sjqq

來提交一個爬蟲任務,提交完成後,會返回提交的任務狀態,這個其實就是提交了一個http請求

{

"node_name": "ZJPH-0321",

"status": "ok",

"jobid": "dd7f10aca76e11e99b656c4b90156b7e"

}

提交成功後,可以在瀏覽器的job下面看到任務的執行情況

教你實現python爬蟲平臺的架構和框架的選型

如果需要攜帶自定義的參數,那麼可以通過-d來指定,比如-d cc=scrapttest,和前面在本地執行時,增加自定義參數是一樣的。

也可以通過http請求工具(比如soapui)提交一個http請求來觸發一個爬蟲任務

"

首先來看一下一個爬蟲平臺的設計,作為一個爬蟲平臺,需要支撐多種不同的爬蟲方式,所以一般爬蟲平臺需要包括

1、 爬蟲規則的維護,平臺在接收到爬蟲請求時,需要能按照匹配一定的規則去進行自動爬蟲

2、 爬蟲的job調度器,平臺需要能負責爬蟲任務的調度,比如定時調度,輪訓調度等。

3、 爬蟲可以包括異步的海量爬蟲,也可以包括實時爬蟲,異步爬蟲指的是爬蟲的數據不會實時返回,可能一個爬蟲任務會執行很久。 實時爬蟲指爬的數據要實時返回,這個就要求時間很短,一般適合少量數據的爬蟲。

4、 爬蟲好的數據可以生成指定的文件,比如csv文件,json文件等,然後通過數據處理引擎做統一處理,比如csv文件可以通過數據交換落入大數據平臺,或者爬蟲好的數據也可以丟入kafka中,然後再通過流式處理任務(spark或者storm,flink)做爬蟲數據的清洗和處理,處理完的數據,可以入到數據庫中。

教你實現python爬蟲平臺的架構和框架的選型

下圖就是在平臺設計時,爬蟲處理的一個流程,這個裡面包含了實時爬蟲,異步爬蟲。

教你實現python爬蟲平臺的架構和框架的選型

我們這裡先介紹異步爬蟲,爬蟲的框架很多,異步爬蟲一般用的比較多就是scrapy。

首先安裝scrapy

pip install scrapy

安裝完成後,就可以通過命令行創建一個基於scrapy的爬蟲項目

scrapy startproject zj_scrapy

然後在命令行中,進入到創建的zj_scrapy目錄下

cd zj_scrapy

執行

scrapy genspider sjqq “sj.qq.com”

創建一個爬蟲

爬蟲創建好了後,可以使用IDE打開創建好的python項目,比如用idea(需要安裝python插件,默認沒有安裝)打開我們創建好的項目

教你實現python爬蟲平臺的架構和框架的選型

項目創建好了後,會默認生成一些模板代碼文件

1、 items.py

items用於存儲字段的定義。即爬取的內容存與item類中,在這裡我們定義了一個name字段。

教你實現python爬蟲平臺的架構和框架的選型

2、 spider文件編寫

這個文件一般在spiders 這個package下面,默認會繼承scrapy.Spider

ss

教你實現python爬蟲平臺的架構和框架的選型

關於這段代碼的解釋如下:

教你實現python爬蟲平臺的架構和框架的選型

3、 pipeline文件編寫

pipeline文件一般用於對處理好的爬蟲結果數據做處理,可以入到數據庫中,也可以生成到指定的文件中,process_item 方法就是對數據做處理的。

另外pipeline 還包含了__init__和close_spider 兩個方法。__init__ 用於做初始化處理。 close_spider 用於執行結束時的操作處理。比如數據寫入數據庫或者文件後,對數據庫做鏈接關閉或者文件流做關閉操作等。

教你實現python爬蟲平臺的架構和框架的選型

4、 setting文件修改

setting文件中存放的是爬蟲的配置,常用的配置一般可以包括

1)、ITEM_PIPELINES的配置,比如

ITEM_PIPELINES = {

'zj_scrapy.pipelines.ZjScrapyPipeline': 300,

}

這裡的300代表了一個優先級,數值範圍一般在0-1000,這個數值確定了運行的順序,數字越小,優先級越高。

2)字符集配置,可以通過FEED_EXPORT_ENCODING指定字符集

FEED_EXPORT_ENCODING = 'utf-8'

3)、CONCURRENT_REQUESTS配置Scrapy執行的最大併發請求數

# Configure maximum concurrent requests performed by Scrapy (default: 16)

CONCURRENT_REQUESTS = 32

4)配置請求的header,可以通過DEFAULT_REQUEST_HEADERS來進行配置

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

5、 本地執行爬蟲

在上面的都做完後,可以通過執行命令行scrapy crawl sjqq -o items.csv 來在本地運行爬蟲,sjqq 就是前面指定的爬蟲名,-o items.csv 表示生成一個csv文件。

教你實現python爬蟲平臺的架構和框架的選型

運行完成後,可以看到爬取的內容已經寫到了指定的文件中。

教你實現python爬蟲平臺的架構和框架的選型

在運行時,可以通過-a 指定自定義的參數,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest

在這條執行命令中,我們指定了一個cc參數等於scrapttest,在Pipeline

中,我們可以通過代碼獲取這個參數

教你實現python爬蟲平臺的架構和框架的選型

在代碼中,我們通過spider.cc 就可以獲取到這個參數的值,然後在運行日誌可以看到,我們打印出來了這個參數值。

教你實現python爬蟲平臺的架構和框架的選型

通過這種方式,我們就解決了爬蟲運行時,參數的的動態傳遞問題。

6、 爬蟲部署到服務端

安裝scrapyd

pip install scrapyd 

安裝scrapyd-deploy

pip install scrapyd-client

scrapyd 是scrapy的爬蟲服務端,安裝完成後,執行scrapyd可以啟動服務端。

啟動時默認端口為6800

教你實現python爬蟲平臺的架構和框架的選型

啟動後,通過瀏覽器可以訪問http://localhost:6800/

教你實現python爬蟲平臺的架構和框架的選型

服務端啟動後,就可以通過scrapyd-deploy 來提交部署開發好的爬蟲了。

scrapyd-deploy <target> -p <project> --version <version>

部署成功後,就可以看到自己的爬蟲項目了

教你實現python爬蟲平臺的架構和框架的選型

7、 創建服務端的爬蟲任務

如果是在linux命令下,可以通過

curl http://localhost:6800/schedule.json -d project= zj_scrapy -d spider=sjqq

來提交一個爬蟲任務,提交完成後,會返回提交的任務狀態,這個其實就是提交了一個http請求

{

"node_name": "ZJPH-0321",

"status": "ok",

"jobid": "dd7f10aca76e11e99b656c4b90156b7e"

}

提交成功後,可以在瀏覽器的job下面看到任務的執行情況

教你實現python爬蟲平臺的架構和框架的選型

如果需要攜帶自定義的參數,那麼可以通過-d來指定,比如-d cc=scrapttest,和前面在本地執行時,增加自定義參數是一樣的。

也可以通過http請求工具(比如soapui)提交一個http請求來觸發一個爬蟲任務

教你實現python爬蟲平臺的架構和框架的選型

schedule.json請求中還可以包含如下參數

setting (string, optional) –自定義爬蟲settings

jobid (string, optional) –jobid,之前啟動過的spider,會有一個id,這個是可選參數

_version (string, optional) –版本號,之前部署的時候的version,只能使用int數據類型,沒指定,默認啟動最新版本

8、 scrapyd 其他的API

1)、curl http://localhost:6800/daemonstatus.json 檢查爬蟲服務的狀態

2)、addversion.json增加項目到服務端 如果項目已經存在,則增加一個新的版本

POST請求:

project (string, required) –項目名

version (string, required) –項目版本,不填寫則是當前時間戳

egg (file, required) –當前項目的egg文件

curl http://localhost:6800/addversion.json -F project=myproject -F version=r23 -F [email protected]

3)、 cancel.json

取消一個 spdier的運行

如果 spider是運行狀態,則停止其運行

如果 spider是掛起狀態,則刪除spider

POST請求:

project (string, required) –項目名

job (string, required) -jobid

curl http://localhost:6800/cancel.json -d project=myproject -d job=6487ec79947edab326d6db28a2d86511e8247444

4)、listprojects.json

獲取當前已上傳的項目的列表

GET請求:

curl http://localhost:6800/listprojects.json

5)、listversions.json

獲取指定項目的可用版本

GET請求:

project (string, required) –項目名

curl http://localhost:6800/listversions.json?project=myproject

6)、listspiders.json

獲取指定版本的項目中的爬蟲列表,如果沒有指定版本,則是最新版本

GET請求:

project (string, required) –項目名

_version (string, optional) –版本號

$ curl http://localhost:6800/listspiders.json?project=myproject

7)、 listjobs.json

獲取指定項目中所有掛起、運行和運行結束的job

GET請求

project (string, option) - restrict results to project name

curl http://localhost:6800/listjobs.json?project=myproject | python -m json.tool

8)、delversion.json

刪除指定項目的指定版本

POST請求

project (string, required) - the project name

version (string, required) - the project version

curl http://localhost:6800/delversion.json -d project=myproject -d version=r99

9)、delproject.json

刪除指定項目,並且包括所有的版本

POST請求

project (string, required) - the project name

curl http://localhost:6800/delproject.json -d project=myproject  

"

相關推薦

推薦中...