Maison développement back-end Tutoriel Python Système de robot d'exploration Web puissant : pyspider

Système de robot d'exploration Web puissant : pyspider

May 12, 2017 am 10:35 AM
pyspider

PySpider : Un puissant système de robot d'exploration de sites Web écrit par un Chinois avec une WebUI puissante. Il est écrit en langage Python, possède une architecture distribuée, prend en charge plusieurs backends de bases de données et le puissant WebUI prend en charge l'éditeur de script, le moniteur de tâches, le gestionnaire de projet et la visionneuse de résultats.

1. Environnement de construction :

Version du système : Linux centos-linux.shared 3.10.0-123.el7.x86_64 #1 SMP lundi 30 juin 12:09 :22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

version python : Python 3.5.1

Construire l'environnement python3 :

Après l'avoir essayé, j'ai choisi l'environnement intégré Anaconda

1.1.1 Compilation


# 下载依赖
yum install -y ncurses-devel openssl openssl-devel zlib-devel gcc make glibc-devel libffi-devel glibc-static glibc-utils sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-deve
# 下载python版本
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
# 或者使用国内源
wget http://mirrors.sohu.com/python/3.5.1/Python-3.5.1.tgz
mv Python-3.5.1.tgz /usr/local/src;cd /usr/local/src
# 解压
tar -zxf Python-3.5.1.tgz;cd Python-3.5.1
# 编译安装
./configure --prefix=/usr/local/python3.5 --enable-shared
make && make install
# 建立软链接
ln -s /usr/local/python3.5/bin/python3 /usr/bin/python3
echo "/usr/local/python3.5/lib" > /etc/ld.so.conf.d/python3.5.conf
ldconfig
# 验证python3
python3
# Python 3.5.1 (default, Oct 9 2016, 11:44:24)
# [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux
# Type "help", "copyright", "credits" or "license" for more information.
# >>>
# pip
/usr/local/python3.5/bin/pip3 install --upgrade pip
ln -s /usr/local/python3.5/bin/pip /usr/bin/pip
# 本人在安装时出现问题 将pip重装
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
python get-pip.py
Copier après la connexion

1.1.2.


# 集成环境anaconda(推荐)
wget https://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86_64.sh
# 直接安装即可
./Anaconda3-4.2.0-Linux-x86_64.sh
# 若出错,可能是解压失败
yum install bzip2
Copier après la connexion
1.2. Installer mariaDB


# 安装
yum -y install mariadb mariadb-server
# 启动
systemctl start mariadb
# 设置为开机启动
systemctl enable mariadb
# 配置密码 默认为空
mysql_secure_installation
# 登录
mysql -u root -p
# 创建一个用户 自己设定账户密码
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'user_pass';
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'localhost' WITH GRANT OPTION;
CREATE USER 'user_name'@'%' IDENTIFIED BY 'user_pass';
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%' WITH GRANT OPTION;
Copier après la connexion

1.3. J'utilise Anaconda


Autres méthodes

# 搭建虚拟环境sbird python版本3.*
conda create -n sbird python=3*
# 进入环境
source activate sbird
# 安装pyspider
pip install pyspider
# 报错 
# it does not exist. The exported locale is "en_US.UTF-8" but it is not supported
# 执行 可写入.bashrc
export LC_ALL=en_US.utf-8
export LANG=en_US.utf-8
#ImportError: pycurl: libcurl link-time version (7.29.0) is older than compile-time version (7.49.0)
conda install pycurl
# 退出
source deactivate sbird
# 若在虚拟机内 出现无法访问localhost:5000 可关闭防火墙
systemctl stop firewalld.service
#########直接运行源码==============
mkdir git;cd git
# 下载
git clone https://github.com/binux/pyspider.git
# 安装
/root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py
Copier après la connexion


Je recommande d'utiliser anaconda à installer
# 搭建虚拟环境
pip install virtualenv
mkdir python;cd python
# 创建虚拟环境pyenv3
virtualenv -p /usr/bin/python3 pyenv3
# 进入虚拟环境 激活环境
cd pyenv3/
source ./bin/activate
pip install pyspider
# 若pycurl报错 
yum install libcurl-devel
# 继续
pip install pyspider
# 关闭
deactivate
Copier après la connexion

Si une erreur se produit lors de l'exécution de pyspider, veuillez vous référer à la section d'installation d'anaconda. À ce stade, visitez localhost:5000 pour voir la page.

1.4. Installer le superviseur


1.4.1. 🎜>

# 安装
yum install supervisor -y
# 若无法检索 则添加阿里的epel源
vim /etc/yum.repos.d/epel.repo
# 添加以下内容
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
http://mirrors.aliyuncs.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
http://mirrors.aliyuncs.com/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
http://mirrors.aliyuncs.com/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0
# 安装
yum install supervisor -y
# 测试是否安装成功
echo_supervisord_conf
Copier après la connexion

1.5.Installation

redis


supervisord   #supervisor的服务器端部分 启动
supervisorctl  #启动supervisor的命令行窗口
# 假设创建进程pyspider01
vim /etc/supervisord.d/pyspider01.ini
# 写入以下内容
[program:pyspider01]

command   = /root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py
directory  = /root/git/pyspider
user     = root
process_name = %(program_name)s
autostart  = true
autorestart = true
startsecs  = 3

redirect_stderr     = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups = 10
stdout_logfile     = /pyspider/supervisor/pyspider01.log
# 重载
supervisorctl reload
# 启动
supervisorctl start pyspider01
# 也可这样启动
supervisord -c /etc/supervisord.conf
# 查看状态
supervisorctl status
# output 
pyspider01            RUNNING  pid 4026, uptime 0:02:40
# 关闭
supervisorctl shutdown
Copier après la connexion

1.6. à partir de


# 消息队列采用redis
mkdir download;cd download
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar xzf redis-3.2.4.tar.gz
cd redis-3.2.4
make
# 或者直接yum安装
yum -y install redis
# 启动
systemctl start redis.service
# 重启
systemctl restart redis.service
# 停止
systemctl stop redis.service
# 查看状态
systemctl status redis.service
# 更改文件/etc/redis.conf
vim /etc/redis.conf
# 更改内容
daemonize no 改为 daemonize yes
bind 127.0.0.1 改为 bind 10.211.55.22(当前服务器ip)
# 重启redis
systemctl restart redis.service
Copier après la connexion

À ce stade, l'environnement d'exploitation à serveur unique pyspider a été construit et déployé. Démarrez localhost:5000 pour accéder à l'interface Web.

Vous pouvez également écrire un script à exécuter et vérifier l'état d'exécution dans /pyspider/supervisor/pyspider01.log.


2. Déploiement distribué
# Supervisor添加到自启动服务
systemctl enable supervisord.service
# redis添加到自启动服务
systemctl enable redis.service
# 关闭防火墙自启动
systemctl disable firewalld.service
Copier après la connexion

Nommez le serveur que vous venez de configurer centos01 Selon cette configuration, déployez respectivement deux centos02 et centos03.

est le suivant :

Description de l'adresse IP du nom du serveur

2.1.centos01

Entrez le serveur centos01, après la première étape, l'environnement de base a été configuré. Modifiez d'abord le

fichier de configuration
/pyspider/config.json

centos01 10.211.55.22 redis,mariaDB, scheduler
centos02 10.211.55.23 fetcher, processor, result_worker,phantomjs
centos03 10.211.55.24 fetcher, processor,,result_worker,webui
Copier après la connexion

et essayez de l'exécuter :


{
 "taskdb": "mysql+taskdb://user_name:user_pass@10.211.55.22:3306/taskdb",
 "projectdb": "mysql+projectdb://user_name:user_pass@10.211.55.22:3306/projectdb",
 "resultdb": "mysql+resultdb://user_name:user_pass@10.211.55.22:3306/resultdb",
 "message_queue": "redis://10.211.55.22:6379/db",
 "logging-config": "/pyspider/logging.conf",
 "phantomjs-proxy":"10.211.55.23:25555",
 "webui": {
  "username": "",
  "password": "",
  "need-auth": false,
  "host":"10.211.55.24",
  "port":"5000",
  "scheduler-rpc":"http:// 10.211.55.22:5002",
  "fetcher-rpc":"http://10.211.55.23:5001"
 },
 "fetcher": {
  "xmlrpc":true,
  "xmlrpc-host": "0.0.0.0",
  "xmlrpc-port": "5001"
 },
 "scheduler": {
  "xmlrpc":true,
  "xmlrpc-host": "0.0.0.0",
  "xmlrpc-port": "5002"
 }
}
Copier après la connexion
Après une exécution réussie, vous pouvez directement modifier /etc/supervisord.d/pyspider01.ini comme suit :


/root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py -c /pyspider/config.json scheduler
# 报错
ImportError: No module named 'mysql'
# 下载 mysql-connector-python
cd ~/git/
git clone https://github.com/mysql/mysql-connector-python.git
# 安装
source activate sbird
cd mysql-connector-python
python setup.py install
# 安装redis
pip install redis
source deactivate
# 运行
/root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py -c /pyspider/config.json scheduler
# 输出 ok
[I 161010 15:57:25 scheduler:644] scheduler starting...
[I 161010 15:57:25 scheduler:779] scheduler.xmlrpc listening on 0.0.0.0:5002
[I 161010 15:57:25 scheduler:583] in 5m: new:0,success:0,retry:0,failed:0
Copier après la connexion
centos01 est déployé.

2.2.centos02

[program:pyspider01]

command   = /root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py -c /pyspider/config.json scheduler
directory  = /root/git/pyspider
user     = root
process_name = %(program_name)s
autostart  = true
autorestart = true
startsecs  = 3

redirect_stderr     = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups = 10
stdout_logfile     = /pyspider/supervisor/pyspider01.log
# 重载
supervisorctl reload
# 查看状态
supervisorctl status
Copier après la connexion
Dans centos02, vous devez exécuter result_worker, processeur, phantomjs, fetcher

pour créer des fichiers respectivement :

Créez pjsconfig.json dans le répertoire pyspider


/etc/supervisord.d/result_worker.ini

[program:result_worker]

command   = /root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py -c /pyspider/config.json result_worker
directory  = /root/git/pyspider
user     = root
process_name = %(program_name)s
autostart  = true
autorestart = true
startsecs  = 3

redirect_stderr     = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups = 10
stdout_logfile     = /pyspider/supervisor/result_worker.log
/etc/supervisord.d/processor.ini

[program:processor]

command   = /root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py -c /pyspider/config.json processor
directory  = /root/git/pyspider
user     = root
process_name = %(program_name)s
autostart  = true
autorestart = true
startsecs  = 3

redirect_stderr     = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups = 10
stdout_logfile     = /pyspider/supervisor/processor.log
/etc/supervisord.d/phantomjs.ini

[program:phantomjs]

command   = /pyspider/phantomjs --config=/pyspider/pjsconfig.json /pyspider/phantomjs_fetcher.js 25555
directory  = /root/git/pyspider
user     = root
process_name = %(program_name)s
autostart  = true
autorestart = true
startsecs  = 3

redirect_stderr     = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups = 10
stdout_logfile     = /pyspider/supervisor/phantomjs.log
/etc/supervisord.d/fetcher.ini

[program:fetcher]

command   = /root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py -c /pyspider/config.json fetcher
directory  = /root/git/pyspider
user     = root
process_name = %(program_name)s
autostart  = true
autorestart = true
startsecs  = 3

redirect_stderr     = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups = 10
stdout_logfile     = /pyspider/supervisor/fetcher.log
Copier après la connexion
Téléchargez phantomjs dans le dossier /pyspider/ et placez git/ Copier pyspider/pyspider/fetcher/phantomjs_fetcher.js vers phantomjs_fetcher.js


{
 /*--ignore-ssl-errors=true */
 "ignoreSslErrors": true,

 /*--ssl-protocol=true */
 "sslprotocol": "any",

 /* Same as: --output-encoding=utf8 */
 "outputEncoding": "utf8",

 /* persistent Cookies. */
 /*cookiesfile="e:/phontjscookies.txt",*/
 cookiesfile="pyspider/phontjscookies.txt",

 /* load image */
 autoLoadImages = false
}
Copier après la connexion
centos02 est déployé.

2.3.centos03

# 重载
supervisorctl reload
# 查看状态
supervisorctl status
# output
fetcher             RUNNING  pid 3446, uptime 0:00:07
phantomjs            RUNNING  pid 3448, uptime 0:00:07
processor            RUNNING  pid 3447, uptime 0:00:07
result_worker          RUNNING  pid 3445, uptime 0:00:07
Copier après la connexion
Le déploiement de ces trois processus fetcher, processeur, result_worker est le même que centos02 Ce serveur ajoute principalement webui sur la base du précédent<🎜. >

Créer un fichier :

3.Résumé

[Recommandations associées]


1. 🎜 >Tutoriel vidéo gratuit Python

/etc/supervisord.d/webui.ini

[program:webui]

command   = /root/anaconda3/envs/sbird/bin/python /root/git/pyspider/run.py -c /pyspider/config.json webui
directory  = /root/git/pyspider
user     = root
process_name = %(program_name)s
autostart  = true
autorestart = true
startsecs  = 3

redirect_stderr     = true
stdout_logfile_maxbytes = 500MB
stdout_logfile_backups = 10
stdout_logfile     = /pyspider/supervisor/webui.log
# 重载
supervisorctl reload
# 查看状态
supervisorctl status
# output
fetcher             RUNNING  pid 2724, uptime 0:00:07
processor            RUNNING  pid 2725, uptime 0:00:07
result_worker          RUNNING  pid 2723, uptime 0:00:07
webui              RUNNING  pid 2726, uptime 0:00:07
Copier après la connexion

2.

Manuel d'apprentissage Python


3

Tutoriel vidéo orienté objet Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer 4 disques virtuels pour créer un cluster MinIO distribué sous Linux ? Comment créer 4 disques virtuels pour créer un cluster MinIO distribué sous Linux ? Feb 10, 2024 pm 04:48 PM

Depuis que j'ai récemment commencé à être responsable de la construction, de la stabilité, de l'exploitation et de la maintenance de systèmes liés au stockage d'objets, en tant que novice en « stockage d'objets », j'ai besoin de renforcer mon apprentissage dans ce domaine. Étant donné que l'entreprise utilise actuellement MinIO pour construire le système de stockage d'objets de l'entreprise, je partagerai progressivement mon expérience d'apprentissage sur MinIO à l'avenir. Tout le monde est invité à continuer à y prêter attention. Cet article présente principalement comment configurer MinIO dans un environnement de test, qui constitue également l'étape la plus élémentaire dans la création d'un environnement d'apprentissage MinIO. 1. Préparez l'environnement expérimental à l'aide de la machine virtuelle OracleVMVirtualBox, installez une version minimale de Linux, puis ajoutez 4 disques virtuels pour servir de disques virtuels MinIO. L'environnement expérimental est le suivant : Ensuite, permettez-moi de vous le présenter brièvement

Adresses de téléchargement d'images de différentes versions de CentOS7 et descriptions de versions (y compris la version Everything) Adresses de téléchargement d'images de différentes versions de CentOS7 et descriptions de versions (y compris la version Everything) Feb 29, 2024 am 09:20 AM

Lors du chargement de CentOS-7.0-1406, il existe de nombreuses versions facultatives. Pour les utilisateurs ordinaires, ils ne savent pas laquelle choisir : (1) CentOS-xxxx-LiveCD.ios et CentOS-xxxx- Quoi. est la différence entre bin-DVD.iso ? Le premier n’a que 700 Mo et le second 3,8 Go. La différence ne réside pas seulement dans la taille, mais la différence la plus essentielle est que CentOS-xxxx-LiveCD.ios ne peut être chargé que dans la mémoire et exécuté, et ne peut pas être installé. Seul CentOS-xxx-bin-DVD1.iso peut être installé sur le disque dur. (2) CentOS-xxx-bin-DVD1.iso, Ce

Étapes pour accéder au mode de réparation d'urgence de CentOS 7 Étapes pour accéder au mode de réparation d'urgence de CentOS 7 Jan 13, 2024 am 09:36 AM

Ouvrez la page centos7 et apparaissez : bienvenue en mode urgence ! après vous être connecté, tapez « journalctl -xb » pour afficher les journaux système, « systemctlreboot » pour redémarrer, « systemctldefault » pour réessayer de démarrer en mode par défaut. giverootpasswordformaintenance(??Control-D???) : Solution : exécuter r

Comment accéder et nettoyer les fichiers indésirables dans le répertoire /tmp dans CentOS 7 ? Comment accéder et nettoyer les fichiers indésirables dans le répertoire /tmp dans CentOS 7 ? Dec 27, 2023 pm 09:10 PM

Il y a beaucoup de déchets dans le répertoire tmp du système centos7. Si vous souhaitez nettoyer les déchets, comment devez-vous procéder ? Jetons un coup d'œil au didacticiel détaillé ci-dessous. Pour afficher la liste des fichiers dans le répertoire de fichiers tmp, exécutez la commande cdtmp/ pour basculer vers le répertoire de fichiers actuel de tmp, et exécutez la commande ll pour afficher la liste des fichiers dans le répertoire actuel. Comme indiqué ci-dessous. Utilisez la commande rm pour supprimer des fichiers. Il convient de noter que la commande rm supprime définitivement les fichiers du système. Par conséquent, il est recommandé que lors de l'utilisation de la commande rm, il soit préférable de donner une invite avant de supprimer le fichier. Utilisez la commande rm-i file name, attendez que l'utilisateur confirme la suppression (y) ou ignore la suppression (n), et le système effectuera les opérations correspondantes. Comme indiqué ci-dessous.

Comment définir des règles de mot de passe dans centos7 ? Comment définir des règles de mot de passe dans centos7 ? Jan 07, 2024 pm 01:17 PM

Définir des règles de mot de passe pour des raisons de sécurité. Définissez le nombre de jours d'expiration du mot de passe. L'utilisateur doit changer le mot de passe dans les jours. Ce paramètre affecte uniquement les utilisateurs créés, pas les utilisateurs existants. Si vous définissez un utilisateur existant, exécutez la commande "chage -M (jours) (utilisateur)". PASS_MAX_DAYS60#Délai d'expiration du mot de passe PASS_MIN_DAYS3#Délai de changement de mot de passe initial PASS_MIN_LEN8#Longueur minimale du mot de passe PASS_WARN_AGE7#Délai d'invite d'expiration du mot de passe Répétez l'utilisation de la restriction du mot de passe [root@linuxprobe~]#vi/etc/pam.d/system-auth#nearline15 :

Comment installer l'extension mbstring sous CENTOS7 ? Comment installer l'extension mbstring sous CENTOS7 ? Jan 06, 2024 pm 09:59 PM

1.UncaughtError:Calltoundefinedfunctionmb_strlen(); Lorsque l'erreur ci-dessus se produit, cela signifie que nous n'avons pas installé l'extension mbstring ; 2. Entrez dans le répertoire d'installation de PHP cd/temp001/php-7.1.0/ext/mbstring ; /usr/local/bin /phpize ou /usr/local/php7-abel001/bin/phpize) pour installer l'extension php 4../configure--with-php-config=/usr/local/php7-abel

Comment installer Mysql dans CentOS7 et le configurer pour qu'il démarre automatiquement au démarrage Comment installer Mysql dans CentOS7 et le configurer pour qu'il démarre automatiquement au démarrage Jun 02, 2023 pm 08:36 PM

Centos7 n'a pas de base de données MySQL. La base de données par défaut est Mariadb (une branche de MySQL). Vous pouvez installer la base de données MySQL manuellement en suivant les étapes ci-dessous. 1. Téléchargez le fichier d'installation rpm wgethttp://repo.mysql.com/mysql-community-release-el7.rpm 2. Exécutez rpm pour installer rpm-ivhmysql-community-release-el7.rpm Une fois la résolution des dépendances terminée. , les options suivantes apparaissent : dependenciesresolved ==================================

Explication détaillée de la commande du fichier de décompression (zip) sous centos7 Explication détaillée de la commande du fichier de décompression (zip) sous centos7 Jan 07, 2024 pm 06:30 PM

1. Le dossier compressé est un fichier zip [root@cgls]#zip-rmydata.zipmydata2. Décompressez mydata.zip dans le répertoire mydatabak [root@cgls]#unzipmydata.zip-dmydatabak3.mydata01 et mydata02.txt sont compressés dans mydata.zip[root@cgls]#zipmydata.zipmydata01mydata02.txt4. Décompressez directement le fichier mydata.zip [root@cgls]#unzipmydata.zip5.

See all articles