centos 部署 scrapy 爬虫详细教程

随笔4个月前发布 周小毛毛
44 0 0

部署流程

  • 参考
  • 环境
  • 安装 pyenv
    • 安装依赖
    • 安装 pyenv
    • 配置环境变量
      • root 用户
            • ~/.bashrc
            • ~/.profile
            • ~/.bash_profile
            • Zsh 用户
            • 重启 shell
  • 使用 pyenv 安装 Python 3.9.1
  • 安装Scrapyd-Client
  • 安装Scrapy
  • systemd添加服务文件

参考

【华为仓库】
【pyenv 多版本的Python管理工具】
【pyenv-virtualenv 虚拟环境管理工具】

环境

centos python默认2.7

安装 pyenv

安装依赖

sudo yum -y install git gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel

  • 1

安装 pyenv

curl https://pyenv.run | bash

  • 1

配置环境变量

root 用户

~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

  • 1
  • 2
  • 3
~/.profile
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.profile

  • 1
  • 2
  • 3
~/.bash_profile
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

  • 1
  • 2
  • 3
Zsh 用户
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

  • 1
  • 2
  • 3
重启 shell
exec "$SHELL"

  • 1

使用 pyenv 安装 Python 3.9.1

# 虚拟环境安装python
pyenv install 3.9.1

# 设置全局版本
pyenv global 3.9.1

# 创建虚拟环境
pyenv virtualenv  htb391

# 查询python版本位置
find / -name 3.9.1

# 修改python镜像地址
nano /root/.pyenv/plugins/python-build/share/python-build/3.9.1

将 https://www.python.org/ftp 修改为 https://mirrors.huaweicloud.com

# 验证版本
python --version

# 激活
pyenv activate 名称
# 主动退出
pyenv deactivate 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

安装scrapyd

pip install scrapyd

  • 1

scrapyd 自定义部署

1. mkdir /etc/scrapyd   创建文件
2. vi /etc/scrapyd/scrapyd.conf    写入配置文件
------------------------------------------------------------------
[scrapyd]
# 网页和Json服务监听的IP地址,默认为127.0.0.1 修改成 0.0.0.0可以远程访问
bind_address = 0.0.0.0
# 监听的端口,默认为6800
http_port = 6800
# 是否打开debug模式,默认为off
debug = off
# 每个CPU可启用的Scrapy 进程数,默认为4
max_proc_per_cpu = 4
# 可启用的最多进程数,默认为0.如果未设置或者设为0,则使用的最多进程数=CPU数量*max_proc_per_cpu
max_proc = 0
# 项目eggs生成目录,默认为项目目录下eggs
eggs_dir = eggs
# 项目日志生成目录,默认为项目目录下logs,如果不想要生成日志,可以直接设置成空
logs_dir = logs
items_dir =
# 项目dbs生成目录,默认为项目目录下dbs
dbs_dir = dbs
# 爬取的items存储的文件夹(版本0.15.以上),默认为空,不存储。
items_dir =
# 每个爬虫保持的完成任务数,默认为5.(版本0.15.以上,以前版本中为logs_to_keep)
jobs_to_keep = 5
# 保持的完成任务进程数。默认为100.(版本0.14.以上)
finished_to_keep = 100
# 轮训请求队列的时间间隔。默认为5s,可以为浮点数
poll_interval = 5.0
# 启动子进程的模块。可以使用自定义
runner = scrapyd.runner
# 返回可用于twisted的application,可继承于Scrapyd添加和移除自己的组件和服务。 https://twistedmatrix.com/documents/current/core/howto/application.html查看更多
application = scrapyd.app.application
launcher = scrapyd.launcher.Launcher
# twisted的web资源,表示到scrapyd的接口。Scrapyd包含一个带有网站的界面,可以提供对应用程序的web资源的简单监视和访问。此设置必须提供twisted web资源的根类。
webroot = scrapyd.website.Root

  • 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

设置scrapyd服务

sudo nano /etc/systemd/system/scrapyd.service
-------------------------------------------------
[Unit]
Description=Scrapyd service
After=network.target

[Service]
User=root
ExecStart=scrapyd地址 --logfile 自定义日志地址/scrapyd.log

[Install]
WantedBy=multi-user.target

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Scrapyd服务

 # 启用并启动Scrapyd服务
 systemctl enable scrapyd.service
 systemctl start scrapyd.service
 # 检查Scrapyd服务状态
 systemctl status scrapyd.service

  • 1
  • 2
  • 3
  • 4
  • 5

安装Scrapyd-Client

使用Scrapyd API与Scrapyd服务交互

pip install scrapyd-client

  • 1

安装Scrapy

Scrapyd是用Scrapy的daemonize功能来运行爬虫的

pip install scrapy

  • 1

去项目里面,执行命令(注意:需要项目所在的机器上也按照Scrapyd-Client)

scrapyd-deploy

  • 1

scrapyd-deploy 生成 scrapy.cfg

# Automatically created by: scrapy startproject
# https://scrapyd.readthedocs.io/en/latest/deploy.html
[settings]
default = 项目名.settings

[deploy]
;url = http://localhost:6800
url = http://124.223.103.190:6800
username = 用户名(scrapyd服务)
password = 密码(scrapyd服务)
project = 项目名
version = 版本号

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

最后,安装自己需要的包

pip3 install fake_useragent
pip3 install bs4
pip3 install pymysql
pip3 install pymongo
pip3 install selenium
pip3 install loguru
pip3 install scrapeops_scrapy

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

可视化 scrapydweb

pip install scrapydweb
pip install logparser
pip install pywin32 (针对windows)

  • 1
  • 2
  • 3

systemd添加服务文件

vim /etc/systemd/system/scrapydweb.service

[Unit]
Description=ScrapydWeb Service
After=network.target

[Service]
# (查询scrapydweb路径: find / -name scrapydweb)
ExecStart= 路径

[Install]
WantedBy=multi-user.target

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

拷贝已配置的scrapydweb_settings_v10.py文件到根目录
服务执行的默认目录就是根目录

cp /home/scrapydweb/scrapydweb_settings_v10.py /scrapydweb_settings_v10.py

  • 1

自定义 scrapydweb_settings_v10.py

# 默认127.0.0.1 ,如需外网 0.0.0.0
SCRAPYDWEB_BIND = '0.0.0.0'
# 端口
SCRAPYDWEB_PORT = 5000
# 开启授权
ENABLE_AUTH = True
# 登录用户名
USERNAME = 'root'
# 用户密码
PASSWORD = 'liaowei@619'
# scrapyd 服务地址
LOCAL_SCRAPYD_SERVER = '服务器地址:端口'
# scrapyd日志文件
LOCAL_SCRAPYD_LOGS_DIR = '/home/scrapydweb/logs'
# 启用LOGPARSER
ENABLE_LOGPARSER = True
# scrapyd 服务
SCRAPYD_SERVERS = [
    #'scrapyd服务器:scrapyd端口',
    #'自己的用户名:自己的密码@scrapyd服务器:scrapyd端口#group',
    ('自己的用户名', '自己的密码', 'scrapyd服务器', 'scrapyd端口', 'group'),
]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

重新加载 systemd,以读取新的服务文件

systemctl daemon-reload

  • 1

设置开机启动scrapydweb

systemctl enable scrapydweb.service

  • 1

启动scrapydweb服务

systemctl start scrapydweb.service

  • 1

安装logparser

# 安装logparser
pip install logparser
# 启动logparser
logparser
# 自定义日志位置
logparser -dir /home/scrapyd/logs

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

生成服务文件

vim /etc/systemd/system/logparser.service

[Unit]
Description=Logparser Service
After=network.target

[Service]
ExecStart=/root/miniconda3/envs/scrapyd/bin/logparser

[Install]
WantedBy=multi-user.target

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

重新加载 systemd,以读取新的服务文件

systemctl daemon-reload

  • 1

设置开机启动scrapydweb

systemctl enable logparser

  • 1

启动scrapydweb服务

systemctl start logparser

  • 1

centos 部署 scrapy 爬虫详细教程

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...