scrapy爬蟲框架

2021-08-03 17:51:31 字數 1887 閱讀 1413

作者經過幾周的python爬蟲實踐之後,深入學習了一下scrapy這個爬蟲框架,現將一些基本知識和**總結整理一下,以備後查。

2.scrapy的命令列使用

這部分網上很多部落格都有總結,不需要背,理解會用主要的命令(startproject crawl fetch list genspider.....)即可,下面列幾條常用場景下的命令,注意下專案命令和全域性命令的區別,就是字面意思的區別。

2.1startproject:這個命令是用來建立scrapy專案的,在控制台中進入希望建立**的目錄下,輸入命令:scrapy startproject firstspide

r即可建立,建立完成之後的專案自動生成了items pipeline spider等檔案和資料夾,這些檔案的詳細作用後面再談。

2.2genspider:這個命令是用來建立爬蟲檔案的,進入firstspider資料夾可以看到,有乙個spider資料夾,這個資料夾下存放的就是具體的爬蟲,genspider命令會在spider資料夾下建立爬蟲。進入建立完成的目錄下 cd firstspider/firstspider;  ;  scrapy genspider -t basic spiderone 命令執行成功截圖如下:

此處需說明一下,-t引數的作用是基於自帶的爬蟲模版建立自己的爬蟲,原生模版有basic crawl xmlfeed csvfeed四種,可用scrapy genspider -l命令檢視,四種模版的詳解此處不做說明,小夥伴可以通過官方文件了解,我們一般選用basic或crawl即可。

2.3 list:這個命令沒什麼難度,作用是檢視本scrapy專案下可用的爬蟲有哪些,自己動手試一下,可以看到2.2中建立的spiderone

2.4 crawl:這個命令是啟動爬蟲的,我們建立了spiderone.py這個爬蟲檔案之後,根據功能需求編寫**之後可以用命令scrapy crawl spiderone開始執行

2.5 fetch用來顯示爬去過程,是乙個全域性命令,不管有沒有有專案都能執行。示例如下:scrapy fetch

更多的命令可以用scrapy -h來看,值得注意的是,在專案資料夾中用scrapy -h看到的結果和在專案資料夾外看到的不一樣,全域性和專案命令的區別。

3.scrapy主要檔案作用

這是乙個scrapy專案的基本結構,items.py這個檔案的作用是儲存爬下來的資料到item物件中,相當於是儲存爬得的資料的容器,要儲存幾個字段,分別把這些欄位field化即可,舉例如下:

name = scrapy.field()

email = scrapy.field()

settings.py是專案一些配置選項的控制檔案,如**ip池,是否遵循被爬**robot協議等,小夥伴在遇到具體需求時去了解。爬蟲檔案在spider資料夾下,main.py是筆者自建的檔案,用來啟動爬蟲。之前說過crawl命令可以啟動,但我們在pycharm編輯之後,想在pycharm中執行,所以就建立這麼乙個檔案,作為驅動。main.py的內容如下

# coding:utf-8

from scrapy import cmdline

cmdline.execute("scrapy crawl spiderone".split())

本質就是通過python的控制台介面呼叫crawl命令。

基本介紹就到這裡,抽空再寫一點實際應用到scrapy的爬蟲**,和自定義建立命令的方法。

個人學習心得,有誤輕噴。

scrapy 爬蟲框架

1.安裝 公升級pip版本 pip install upgrade pip 通過pip安裝scrapy框架 pip install scrapy 安裝成功 只執行scrapy 進行測試是否安裝成功 2.scrapy startproject 爬蟲專案名稱 執行此命令,可以生成乙個爬蟲專案 會預先生成...

Scrapy爬蟲框架

scrapy中的各大元件及其功能 1.scrapy引擎 engine 引擎負責控制資料流在系統的所有元件中流動,並在相應動作發生時觸發事件。2.排程器 scheduler 排程器從引擎接收request並將它們入隊,以便之後引擎請求request時提供給引擎。4.spider。spider是scra...

scrapy 爬蟲框架

爬蟲基礎 2 各模組的作用 close spider spider spider 爬蟲專案大概流程 1 新建專案 spider startproject 2 明確需要目標 產出 編寫item.py 可以有很多個,被按照順序載入執行 作用是對發出的請求和返回的結果進行預處理 在middlewares中...