centos 部署 scrapy 爬虫详细教程

news/2024/9/20 3:52:03/ 标签: centos, scrapy, 爬虫

部署流程

  • 参考
  • 环境
  • 安装 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

安装 pyenv

curl https://pyenv.run | bash

配置环境变量

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
~/.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
~/.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
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
重启 shell
exec "$SHELL"

使用 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 

安装scrapyd

pip install scrapyd

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

设置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

Scrapyd服务

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

安装Scrapyd-Client

使用Scrapyd API与Scrapyd服务交互

pip install scrapyd-client

安装Scrapy

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

pip install scrapy

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

scrapyd-deploy

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 = 版本号

最后,安装自己需要的包

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

可视化 scrapydweb

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

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

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

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

自定义 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'),
]

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

systemctl daemon-reload

设置开机启动scrapydweb

systemctl enable scrapydweb.service

启动scrapydweb服务

systemctl start scrapydweb.service

安装logparser

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

生成服务文件

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

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

systemctl daemon-reload

设置开机启动scrapydweb

systemctl enable logparser

启动scrapydweb服务

systemctl start logparser

在这里插入图片描述


http://www.ppmy.cn/news/1514362.html

相关文章

.NET系列 定时器

net一共4种定时器 System.Windows.Forms.Timer 类型 》》WinForm专用System.Windows.Threading.DispatcherTime类型》》WPF专用System.Threading.Timer类型》》》它使用 ThreadPool 线程来执行定时操作System.Timers.Timer类型 》》这种很老了。 它使用基于底层计时…

每天一个数据分析题(四百九十七)- 序列模式挖掘

序列模式挖掘 (sequence pattern mining )是指挖掘相对时间或其他模式出现频率高的模式,典型的应用还是限于离散型的序列。下列哪个选项不属于序列模式的时限约束? A. 最大跨度约束 B. 主键约束 C. 最小间隔和最大间隔约束 D. 窗口大小约…

vue3 img标签动态加载图片

<img :src"getImgUrl(item.name)" alt"">//组合式下 methods里方法 getImgUrl(name){let url new URL(../../../assets/images/bigscreen/${name}.png, import.meta.url).hrefreturn url},

【微信小程序】自定义组件 - 数据、方法和属性

1. data 数据 2. methods 方法 在小程序组件中&#xff0c;事件处理函数和自定义方法需要定义到 methods 节点中&#xff0c;示例代码如下&#xff1a; 3. properties 属性 在小程序组件中&#xff0c;properties 是组件的对外属性&#xff0c;用来接收外界传递到组件中的数…

IDEA工具设置默认使用maven的settings.xml文件

第一步&#xff1a;打开idea工具&#xff0c;选中 File ——> New Projects Setup ——> Settings for New Projects 第二步&#xff1a;先设置下自动构建项目这个选项 第三步&#xff1a;选中 Build Tools ——> Maven&#xff0c;让后就可以设置自己安转的maven和se…

Modbus初学者教程,第六章:Modbus 答疑

第六章&#xff1a;Modbus 答疑 平时调试Modbus设备&#xff0c;或者学习Modbus协议&#xff0c;推荐一款Modbus主从站模拟器&#xff1a; 主站下载地址&#xff1a;Modbus从站模拟器 从站下载地址&#xff1a;Modbus主站模拟器 我从哪里开始与我的 Modbus 设备通信&#xff1f…

无人机:航拍书籍推荐

写在前面 学习航拍&#xff0c;整理一些书籍分享理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚度时间和没有好好做事&#xff0c;所以唯一的解决办法就是行动起来&#xff0c;认真做完事情&#xff0c;战胜焦虑&#xff0c;战胜那些心里空荡荡的时刻&…

克服编程挫折:从Bug的迷宫中寻找出口与面对算法保持冷静的策略

在编程学习的道路上&#xff0c;挫折感无疑是每个学习者都必须面对的挑战之一。它们仿佛是一座座高墙&#xff0c;阻挡我们前进的步伐。然而&#xff0c;正如许多有经验的编程高手所证明的那样&#xff0c;挫折并不是终点&#xff0c;而是成长和进步的催化剂。本文将分享一些有…

【实战场景】如何优雅实现分页

【实战场景】如何优雅实现分页 开篇词&#xff1a;干货篇&#xff1a;1.添加PageHelper依赖2.添加PageHelper配置3.使用 PageHelper4.自定义Pageable注解 总结&#xff1a;1.执行查询2.处理分页结果3.注意事项 我是杰叔叔&#xff0c;一名沪漂的码农&#xff0c;下期再会&#…

数据仓库ETL开发

在企业数字化转型的过程中&#xff0c;数据仓库已经成为了企业管理和决策的重要工具。数据仓库ETL开发是构建数据仓库的关键步骤之一&#xff0c;它可以帮助企业从源系统中抽取、清洗、转换和整合数据&#xff0c;方便企业进行管理和分析。本文将介绍如何高效实现数据仓库ETL开…

Notepad--文本编辑工具 for Mac教程【苹果电脑-简单轻松上手-免费Mac软件推荐】

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其拖入应用程序中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试解决“软件已损坏&#xff0c;无法打开”问题&#xff0c;若没有该问题&#xff0c;可…

Vue3 指令 6

Vue3 指令&#xff08;Directive&#xff09;是 Vue3 中的一种特殊的语法&#xff0c;用于在模板中添加自定义的行为。指令可以用来修改 DOM、监听事件、绑定数据等。下面是 Vue3 指令的主要类型&#xff1a; 1. v-binding v-binding 指令用于绑定数据到 HTML 属性上。例如&a…

深入理解SQL中的INNER JOIN操作

本文介绍了INNER JOIN的定义、使用场景、计算方法及与其他JOIN的比较。INNER JOIN是关系数据库中常用的操作&#xff0c;用于返回两个表中匹配的行&#xff0c;只有在连接条件满足时才返回数据。本文详细解释了INNER JOIN的语法及其在一对多、多对多关系中的应用&#xff0c;通…

【论文阅读】Enhance Model Stealing Attack via Label Refining(2022)

摘要 With machine learning models(机器学习模型) being increasingly(越来越多) deployed(部署), model stealing attacks(模型窃取攻击) have raised an increasing interest. Extracting decision-based models(基于决策的模型窃取) is a more challenging task…

【工具类】Java优雅的将XML转为JSON格式、XML转JSON

Java优雅的将XML转为JSON格式、XML转JSON 1. 导入依赖1.1 Maven使用1.2 Gradle使用 2. 代码编写3.运行示例 1. 导入依赖 1.1 Maven使用 <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</vers…

《计算机操作系统》(第4版)第4章 存储器管理 复习笔记

第4章 存储器管理 一、存储器的层次结构 1. 多层结构的存储器系统 如图4-1所示&#xff0c;在存储层次中越往上&#xff0c;存储介质的访问速度越快&#xff0c;价格也越高&#xff0c;相对存储容量也越小。 图4-1 计算机系统存储层次示意 2.三级存储系统 (1)Cache- 主存存储体…

linux下搭建MySQL8.0.25一主一从

一、主从复制概述 1.1、概述 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行…

AI大模型开发——7.百度千帆大模型调用

本节旨在为读者提供一个实用指南&#xff0c;探讨如何有效地利用百度千帆大模型平台的强大功能。从基础的账号注册和密钥申请入手&#xff0c;逐步引领用户通过案例&#xff0c; 理解并掌握如何调用文本和图像处理的大模型 API&#xff0c; 包括但不限于 NLP、对话生成、文本续…

windows bash获取一个目录下所有的文件

在Windows系统中&#xff0c;我们可以使用命令行工具来获取文件夹下的所有文件名。具体操作如下&#xff1a; 1. 打开命令提示符&#xff08;WinR&#xff0c;输入cmd&#xff0c;回车&#xff09;&#xff1b; 2. 进入需要提取文件名的文件夹&#xff08;使用cd命令&#xf…

sqlilabs less16-20关手工注入

第16关 一.判断闭合方式 闭合方式点“&#xff09; admin")and11# 二.判断数据库长度 admin") and if(length(database())>7, 0, sleep(5))# 页面无延迟 admin") and if(length(database())>8, 0, sleep(5))# 页面有延迟说明数据库长度为8 三.判断数…