spider-admin-pro 一個集爬蟲Scrapy+Scrapyd爬蟲項目查看 和 爬蟲任務定時調度的可視化管理工具

      網友投稿 1761 2025-04-01

      Spider Admin Pro

      Github: https://github.com/mouday/spider-admin-pro

      Gitee: https://gitee.com/mouday/spider-admin-pro

      Pypi: https://pypi.org/project/spider-admin-pro

      目錄

      簡介

      安裝啟動

      配置參數

      部署優化

      使用擴展

      技術棧

      項目結構

      經驗總結

      TODO

      項目贊助

      交流溝通

      項目截圖

      簡介

      Spider Admin Pro 是Spider Admin的升級版

      簡化了一些功能;

      優化了前端界面,基于Vue的組件化開發;

      優化了后端接口,對后端項目進行了目錄劃分;

      整體代碼利于升級維護。

      目前僅對Python3進行了支持

      [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9m5GDiK3-1649514857795)(https://github.com/mouday/spider-admin-pro/raw/master/doc/img/spider-admin-pro.png)]

      安裝啟動

      本項目基于Python3.7.0 開發,所以推薦使用Python3.7.0及其以上版本

      方式一:

      $ pip3 install spider-admin-pro $ python3 -m spider_admin_pro.run

      1

      2

      3

      方式二:

      $ git clone https://github.com/mouday/spider-admin-pro.git $ python3 spider_admin_pro/run.py

      1

      2

      3

      配置參數

      配置優先級:

      yaml配置文件 > env環境變量 > 默認配置

      1

      1、默認配置

      # flask 服務配置 PORT = 5002 HOST = '127.0.0.1' # 登錄賬號密碼 USERNAME = admin PASSWORD = "123456" JWT_KEY = FU0qnuV4t8rr1pvg93NZL3DLn6sHrR1sCQqRzachbo0= # token過期時間,單位天 EXPIRES = 7 # scrapyd地址, 結尾不要加斜桿 SCRAPYD_SERVER = 'http://127.0.0.1:6800' # 調度器 調度歷史存儲設置 # mysql or sqlite and other, any database for peewee support SCHEDULE_HISTORY_DATABASE_URL = 'sqlite:///dbs/schedule_history.db' # 調度器 定時任務存儲地址 JOB_STORES_DATABASE_URL = 'sqlite:///dbs/apscheduler.db' # 日志文件夾 LOG_DIR = 'logs'

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      2、env環境變量

      在運行目錄新建 .env 環境變量文件,默認參數如下

      注意:為了與其他環境變量區分,使用SPIDER_ADMIN_PRO_作為變量前綴

      如果使用python3 -m 運行,需要將變量加入到環境變量中,運行目錄下新建文件env.bash

      注意,此時等號后面不可以用空格

      # flask 服務配置 export SPIDER_ADMIN_PRO_PORT=5002 export SPIDER_ADMIN_PRO_HOST='127.0.0.1' # 登錄賬號密碼 export SPIDER_ADMIN_PRO_USERNAME='admin' export SPIDER_ADMIN_PRO_PASSWORD='123456' export SPIDER_ADMIN_PRO_JWT_KEY='FU0qnuV4t8rr1pvg93NZL3DLn6sHrR1sCQqRzachbo0='

      1

      2

      3

      4

      5

      6

      7

      8

      9

      增加環境變量后運行

      $ source env.bash $ python3 -m spider_admin_pro.run

      1

      2

      3

      4

      [注意]:

      為了簡化配置復雜度,方式2:env環境變量,計劃將在下一版本移除

      3、自定義配置

      在運行目錄下新建config.yml 文件,運行時會自動讀取該配置文件

      eg:

      # flask 服務配置 PORT: 5002 HOST: '127.0.0.1' # 登錄賬號密碼 USERNAME: admin PASSWORD: "123456" JWT_KEY: "FU0qnuV4t8rr1pvg93NZL3DLn6sHrR1sCQqRzachbo0=" # token過期時間,單位天 EXPIRES: 7 # scrapyd地址, 結尾不要加斜桿 SCRAPYD_SERVER: "http://127.0.0.1:6800" # 日志文件夾 LOG_DIR: 'logs'

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      生成jwt key

      $ python -c 'import base64;import os;print(base64.b64encode(os.urandom(32)).decode())'

      1

      部署優化

      1、使用 Gunicorn管理應用

      Gunicorn文檔:https://docs.gunicorn.org/

      # 啟動服務 $ gunicorn --config gunicorn.conf.py spider_admin_pro.run:app

      1

      2

      注意:

      如果使用了 Gunicorn 那么 配置文件中的 PORT 和 HOST 將會不生效

      如果需要修改port 和host, 需要修改gunicorn.conf.py 文件中的 bind

      一個配置示例:gunicorn.conf.py

      # -*- coding: utf-8 -*- """ $ gunicorn --config gunicorn.conf.py spider_admin_pro.run:app """ import multiprocessing import os from gevent import monkey monkey.patch_all() # 日志文件夾 LOG_DIR = 'logs' if not os.path.exists(LOG_DIR): os.mkdir(LOG_DIR) def resolve_file(filename): return os.path.join(LOG_DIR, filename) def get_workers(): return multiprocessing.cpu_count() * 2 + 1 # daemon = True daemon = False # 使用supervisor不能是后臺進程 # 進程名稱 proc_name = "spider-admin-pro" # 啟動端口 bind = "127.0.0.1:5001" # 日志文件 loglevel = 'debug' pidfile = resolve_file("gunicorn.pid") accesslog = resolve_file("access.log") errorlog = resolve_file("error.log") # 啟動的進程數 # workers = get_workers() workers = 2 worker_class = 'gevent' # 啟動時鉤子 def on_starting(server): ip, port = server.address[0] print('server.address:', f'http://{ip}:{port}')

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      注意:

      使用gunicorn部署,會啟動多個worker, 這樣apscheduler會啟動多個,可能會出現重復運行的情況(暫時沒出現)

      這種情況下,調度器控制開關不要動,以免啟動不了;如果出現了定時任務不執行,可嘗試重啟整個服務

      2、使用supervisor管理進程

      文檔:http://www.supervisord.org

      spider-admin-pro.ini

      [program: spider-admin-pro] directory=/spider-admin-pro command=/usr/local/python3/bin/gunicorn --config gunicorn.conf.py spider_admin_pro.run:app stdout_logfile=logs/out.log stderr_logfile=logs/err.log stdout_logfile_maxbytes = 20MB stdout_logfile_backups = 0 stderr_logfile_maxbytes=10MB stderr_logfile_backups=0

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      3、使用Nginx轉發請求

      server { listen 80; server_name _; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { proxy_pass http://127.0.0.1:5001/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      spider-admin-pro 一個集爬蟲Scrapy+Scrapyd爬蟲項目查看 和 爬蟲任務定時調度的可視化管理工具

      13

      14

      15

      16

      17

      18

      19

      使用擴展

      收集運行日志:scrapy-util 可以幫助你收集到程序運行的統計數據

      技術棧:

      1、前端技術:

      2、后端技術

      項目結構

      【公開倉庫】基于Flask的后端項目spider-admin-pro: https://github.com/mouday/spider-admin-pro

      【私有倉庫】基于Vue的前端項目spider-admin-pro-web: https://github.com/mouday/spider-admin-pro-web

      spider-admin-pro項目主要目錄結構:

      . ├── run.py # 程序入口 ├── api # Controller層 ├── service # Sevice層 ├── model # Model層 ├── exceptions # 異常 ├── utils # 工具類 └── web # 靜態web頁

      1

      2

      3

      4

      5

      6

      7

      8

      9

      經驗總結

      Scrapyd 不能直接暴露在外網

      其他人通過deploy部署可以將代碼部署到你的機器上,如果是root用戶運行,還會在你機器上做其他的事情

      還有運行日志中會出現配置文件中的信息,存在信息泄露的危險

      二次開發

      git clone https://github.com/mouday/spider-admin-pro.git cd spider-admin-pro python3 dev.py

      1

      2

      3

      4

      5

      安裝升級

      pip3 install -U spider-admin-pro -i https://pypi.org/simple

      1

      Python Scrapy

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel里找到數據分析的詳細操作
      下一篇:招生難,排課難,課時考勤難?一文解決教育培訓行業的4大痛點(附43頁教育解決方案)
      相關文章
      亚洲伊人久久精品| 99久久国产亚洲综合精品| 亚洲乱码国产一区三区| 亚洲精品123区在线观看| 亚洲国产精品国自产拍电影| 亚洲国产精品无码久久久秋霞2| 在线观看亚洲视频| 久久亚洲中文无码咪咪爱| 亚洲AV永久无码精品放毛片| 亚洲AV永久无码精品放毛片 | 亚洲精品欧美综合四区| 亚洲人成影院午夜网站| 亚洲六月丁香六月婷婷色伊人| 亚洲色欲www综合网| 亚洲国产综合专区电影在线| 亚洲一区二区三区四区在线观看| 亚洲av无码一区二区三区网站| 国产国拍亚洲精品mv在线观看| 亚洲va中文字幕无码久久不卡| 亚洲AV本道一区二区三区四区| 亚洲色欲色欲综合网站| 亚洲精品第五页中文字幕| 亚洲国产成人精品无码区在线网站| 33333在线亚洲| 亚洲精品国产av成拍色拍| 亚洲欧美综合精品成人导航| 亚洲av色香蕉一区二区三区| 国产亚洲美女精品久久久久| 亚洲区日韩区无码区| 亚洲人色婷婷成人网站在线观看| 久久精品国产亚洲AV果冻传媒| 久久亚洲AV成人无码电影| 亚洲一区二区三区深夜天堂| 亚洲老熟女五十路老熟女bbw | 国产av天堂亚洲国产av天堂 | 91在线精品亚洲一区二区| 亚洲另类视频在线观看| 亚洲色中文字幕在线播放| 国产亚洲午夜精品| 亚洲色成人WWW永久网站| 亚洲人成亚洲精品|