工具 筆記 scrapy相關和docker部分

2021-08-21 13:47:08 字數 2481 閱讀 3180

示例:architecture_spider

參考scrapy文件,scrapyd文件

scrapy的架構非常清晰。

scrapy的架構

一般乙個非常簡單的爬蟲,只需要建立乙個spider,定義乙個item,加上部分setting即可。如果對結果儲存有要求,那就加乙個itempipe。

scrapy命令分在專案內和專案外兩部分,如何區分是否在專案內,只需要在命令列看輸出即可知道。

對於示例,在專案內,執行:

scrapy genspider idchina

即可按照預設的模板建立對應的目錄和檔案,當然也可以全部手動建立。

基本的話,scrapy抓取html並分析。那麼如何分析抓取的部分呢?

推薦使用xpath。chrome瀏覽器有外掛程式叫做xpath finder,可以用來定位。我一般是用它來一步步驗證所猜測的xpath表示式是否正確。

但也可以使用scrapy命令來猜測:

scrapy shell ''

使用該命令來分析對應的網頁。

寫完了,跑一下:

scrapy crawl idchina

terminal中就會有爬蟲的執行資訊。

當然這是最簡單的執行,正式一點或生產環境,就需要使用deploy工具。官方推薦使用scrapydscrapyd-deploy,後者未來應該會改名為scrapyd-client,如名所示,它們是一對client-server。

使用它們,需要在scrapy.cfg中配置,啟動成功後,預設可通過localhost:6800來訪問。

如果想要開始爬蟲工作,傳送命令:

這些環境配置,除了在本地配置外,還可以使用docker,更方便,更省時間,更易於移到其他環境使用。

參考docker 入門教程,docker 微服務教程,docker — 從入門到實踐

其實我大部分也是照貓畫虎。

乙個體會:先找下有沒有現成的image可用,越接近專案所需的環境應該越好,畢竟我配置水平不怎麼樣。剛開始我是用乙個python的image配的,結果服務全部啟動成功,但是埠對映一直不知道為什麼總是不行,明明容器內部是可訪問的,但是宿主機上就是不可訪問該埠。最後放棄**,直接找了乙個scrapy的image來用。

另外,用別人的image的時候可以順便看看學學別人的dockerfile是怎麼寫的。

如果只是想用一些現成的服務,那麼找到對應的image,然後docker pulldocker run即可。

如果想要把自己的服務也打包成乙個image,那麼就需要寫乙個dockerfile,然後docker build

如果想搞整合,那麼就需要使用docker-compose,那麼就需要寫乙個docker-compose.yaml,然後docker-compose up -d

另外docker imagesdocker psdocker rm -fdocker rmi也是常用的。

在示例的docker-compose.yaml中,我把volumes注釋掉了,原因是如果加上,那麼啟動的時候會報錯:scrapyd對應的日誌目錄不存在(error: the directory named as part of the path /architecture_spider/logs/scrapyd.log does not exist in section 'program:scrapyd' (file: '/etc/supervisor/conf.d/supervisord.conf'))。

其實在dockerfile中已經建立了,但是我猜測在docker-compose.yaml新增volumes會把對應的log目錄消除掉,因為我的.dockerignore檔案中包括了logs/。按照我的推理,只需要把這個日誌目錄移除出volumes所指向的目錄之外即可。

docker很好用,非常節省生命,還需要好好學習,第三個參考可以反覆看看。

UNIX Linux程式設計相關工具和資源

linux程式設計所用的一些工具 gcc 中文手冊 gnu make 指南 autoconf 2.57手冊 英文 autoconf 2.13手冊 使用 automake 使用cvs進行版本管理 cvs用後感 linux下常用除錯工具 非常好的gdb教程,強烈推薦 gdb英文文件 gdb基本用法 gd...

UNIX Linux程式設計相關工具和資源

1。linux程式設計所用的一些工具 gcc 中文手冊 gnu make 指南 autoconf 2.57手冊 英文 autoconf 2.13手冊 使用 automake 使用cvs進行版本管理 cvs用後感 linux下常用除錯工具 非常好的gdb教程,強烈推薦 gdb英文文件 gdb基本用法 ...

UNIX Linux程式設計相關工具和資源

linux程式設計所用的一些工具 gcc 中文手冊 gnu make 指南 autoconf 2.57手冊 英文 autoconf 2.13手冊 使用 automake 使用cvs進行版本管理 cvs用後感 linux下常用除錯工具 非常好的gdb教程,強烈推薦 gdb英文文件 gdb基本用法 gd...