【Python实战】用Scrapyd把Scrapy爬虫一步一步部署到腾讯云上,有彩蛋

接着以前的几篇文章说。
我把爬虫已经写好了,并且在本地能够运行了。
这个不是最终的目的啊。
咱们是要在服务器上运行爬虫。
利用周末,同时腾讯送的7天云服务器体验也快到期了
就在这里再来一篇手把手的将爬虫部署到服务器上吧。
绝对从0教学。
一步一步的来,还有截图
让你从『倔强青铜』杀到『最强王者』python

为啥要写这篇文章,就是为了让你上『最强王者』! Scrapy的文章,好多好多,可是99%的文章都是,写完爬虫就完事儿了,至于后来怎么用?去哪里用?都没有交带。我这里就交代一种,能够把你的小虫子部署到服务器上!可是怎么部署,sql

当你去百度查『scrapy爬虫部署』的时候
,有几篇文章说,用Scrapyd,可是,他们都只是简单的,在windows机器上部署,并且都是部署到本地。
对于想要大展宏图的你,根本没有帮助
那么,就让我来作这个引路人,带你一步一步的,将Scrapy爬虫,经过Scrapyd来部署到远端的腾讯云服务器上吧!

从前几排文章来看,貌似你们对爬虫仍是很跟兴趣的。以前写的两篇文章『【Python实战】手把手超详细教程教你Scrapy爬达盖尔社区,有彩蛋』『【Python实战】用Scrapy编写“1024网站种子吞噬爬虫”』都反响不错,充分的激起了你们学习Python,运用Python的热情。感受Python不在是那么的死板,再也不是像教科书上的说明,是实实在在的能够在平时运用,编写的程序语言。因此,这篇咱们就稍微进阶一下:数据库

将咱们的爬虫部署到腾讯云服务器上面。废话很少说,咱们就来实战操做吧。编程

这里选择什么云服务都是能够的,阿里云,AWS,腾讯云,其余云都是没有问题的。部署方法基本同样,这里为了方便,因此笔者选择了腾讯云来作讲解。json

既然咱们选择了腾讯云,首先去腾讯云的官网,注册登陆一下。windows

1https://cloud.tencent.com/
复制代码

当你看到这篇文章的时候,我不知道腾讯云的优惠是怎样的,反正我当时,给我了7天的云服务器体验。我就准备拿这个试试手。腾讯云界面长这个样子:浏览器


登陆以后,买完服务器以后,在云服务器界面,就会看到你的服务器实例了:安全


界面上面有你服务器的ip地址,咱们远程登陆,就须要知道服务器的公网ip地址:bash


本地我用Mac的terminal的ssh登陆,输入指令就是:服务器

1$ ssh root@1XX.XXX.XXX.XXX
复制代码

而后输入密码,登陆成功,就会显示以下界面:


卧槽,能够看到,有3万屡次的尝试登陆,看来服务器的权限若是设置的不够安全的话,是很容易被别人攻破的。

OK,服务器的东西咱们就先暂时放到一边。输入

1$ exit
复制代码

退出登陆。咱们先来讲说爬虫的事儿。

这里,咱们待部署的爬虫,是用

Scrapy
写的。咱们要用到的工具,有Scrapyd和Scrapyd-client。这两个是专门用来部署Scrapy爬虫的东西。OK,既然要部署爬虫,咱们就来先看一下咱们的爬虫长什么样子。

这里咱们部署的爬虫只是我往后项目的一个简单的版本,你能够看『1024种子吞噬』『“手把手”教你用爬虫爬达盖尔社区』这两个文章里面的爬虫,里面还有详细的编写爬虫的指导教程。因此,今天咱们部署的爬虫,是最先的一篇用requests写的爬虫『【Python实战】用代码来访问1024网站』的Scrapy版本。

之因此好部署这个,是为了往后在个人公众号『皮克啪的铲屎官』里面,加入『Daily1024』自动回复的功能而作准备。之后也会推出这样的文章,敬请期待
。好了,如今就简单介绍一下这个待部署的爬虫长什么样子。

工程目录仍是很简单的,和标准的Scrapy建立目录同样:


至于工程怎么写,请参考『“手把手”教你用爬虫爬达盖尔社区』文章。
咱们这期的爬虫项目叫DailyWeb,里面的虫子叫Caoliu。爬虫『Caoliu』的主要功能,就是从不一样的主题区里面,读取当天发布的帖子,而后将这些帖子的url,title,发布时间和id都保存下来,存入数据库中。

想要爬虫源码的同窗,请关注『皮克啪的铲屎官』,回复『部署服务器爬虫』便可得到。若是有什么疑问,也能够在公众号里面留言,我会一一查看的。

爬虫就是这样,咱们部署的任务,目前有两个部分,远端的服务器和咱们本地的电脑。咱们要把本地电脑的爬虫部署到远端的服务器上,上文中咱们提到了两个东西Scrayd和Scrapyd-client这两个东西,分别安装的位置就是远端服务器安Scrapyd,本地须要上传的机器安装Scrapy-client。那么,咱们本地机器安装scrapy-client。

1$ pip isntall scrapy-client
复制代码

安装完成以后,咱们须要进入到你Scrapy工程目录下,执行

1$ scrapyd-deploy -l
复制代码

就会生成一个scrapy.cfg文件。这个文件就是项目的配置文件,里面大概长这个样子:

1[settings]
2default = DailyWeb.settings
3
4[deploy]
5#url = http://localhost:6800/
6project = DailyWeb
复制代码

这里,咱们须要改一些东西,将url的注释取消掉,同时,改为你服务器的地址,再在deploy后面加上一个远端地址的名字。

1[settings]
2default = DailyWeb.settings
3
4[deploy:TencentCloud]
5url = http://119.75.216.20:6800/
6project = DailyWeb
复制代码

OK,本地的配置到这里就结束了。咱们接着以前的教程来登陆你远端的服务器,登陆成功以后,咱们须要安装Python3.6,以及Scrapyd等东西。

你只须要按步骤输入一下命令行就能够,有些命令执行起来可能会时间比较长,请稍做等待

1  // 安装依赖包
 2# yum -y groupinstall "Development tools"
 3# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
 4
 5  // 下载 Python 3.6.2
 6# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
 7
 8  // 建立安装目录
 9# mkdir /usr/local/python3
10
11  // 安装 gcc
12# yum -y install gcc
13
14  // 安装 Python 3.6.2
15# tar -xvJf Python-3.6.2.tar.xz
16# cd Python-3.6.2
17# ./configure --prefix=/usr/local/python3
18# make && make install
19
20  // 安装scrapyd
21# pip3 install scrapyd
22
23  // 安装scrapy
24# pip3 install scrapy
25  // 安装scrapyd-client
26# pip3 install scrapyd-client
27  // 安装BeautifulSoup4,由于爬虫中用到了,因此这里得安装一下
28# pip3 install bs4
复制代码

安装好以后,运行命令

1# '/usr/local/python3/bin/scrapyd'
复制代码

会启动scrapyd,以下图:


Scrapyd启动后,是能够经过访问6800端口查看到网页信息的。那么这里咱们若是想经过外网ip访问到网页,是失败的
,咱们须要作一些修改须要修改一些设置。

首先,咱们得修改default_scrapyd.conf文件。这个问题件的路径在下面:


咱们须要将 bind_address = 127.0.0.1 改成 bind_address = 0.0.0.0,这样,就能够经过外部访问本地的ip了:


接着,咱们还须要给咱们的云服务器配置一下安全组,要把6800的接口权限开通,这样才可以经过外网访问到服务器的网页。

腾讯云的控制台页面,左侧选择安全组,

选择新建按钮,咱们这里选择经常使用的端口暴露,即第二个。


而后选择修改规则,由于咱们要把6800加进去。


选择添加规则,将ip设置成 0.0.0.0/0 即全网ip,端口写 tcp:6800,选择容许,而后点击肯定。


安全组添加好了,那么咱们回到服务器实例页面,在更多里面选择配置安全组:


选择咱们刚才添加的那个安全组,点击肯定。


OK,

如今就是见证奇迹的时刻
,在本身的浏览器里面,输入本身服务器的公网ip再加6800端口号,好比我,个人服务器公网ip是:119.75.216.20,那么我在浏览器里面输入的网址就应该是 119.75.216.20:6800。这样,
就能够看到Scrapyd的页面!!


因为咱们尚未部署爬虫,因此,点击Jobs和Logs连接进去以后,都是空页面。

啊,个人快捷标签你们就别关注了。看到这个页面就说明你的Scrapyd在远端的服务器上面已经跑成功了。

固然,这些端口6800什么的,都是能够配置的,配置文件就是在上面所说的那个default_scrapyd.conf文件。最关键的就是要给服务器配置安全组,将对应的端口开放,不然访问不成功。

好了,接下来,咱们就该关注本地了,将咱们的爬虫部署到服务器上。

本地进入到爬虫工程的目录。由于刚才输入了$ scrapyd-deploy -l生成了一个scrapy.cfg文件,咱们须要对这个文件修改一些东西。将文件修改为一下样式:

1[settings]
2default = DailyWeb.settings
3
4[deploy:TencentCloud]
5url = http://119.75.216.20:6800/   
6project = DailyWeb
复制代码

而后本地按照scrapyd-deploy <host> -p <project>输入指令:

1$ scrapyd-deploy TencentCloud -p DailyWeb
复制代码

如果在这期间有错误,根据错误提示来自行安装Python库就好。等到部署成功,会出现以下画面:


看到,服务器给咱们返回了一个json格式的结果。这个就是Scrapyd的最大特色,经过json来控制操做。上面显示的是部署成功。

咱们若是想检查部署的工程,按照scrapyd-deploy -L <host>,在本地输入命令:

1$ scrapyd-deploy -L TencentCloud
复制代码

结果以下:


看到咱们的DailyWeb爬虫已经成功部署到了腾讯云服务器上了。

咱们能够通命令:

1curl http://119.75.216.20:6800/listprojects.json
复制代码

能够看到远端服务器上的爬虫:


OK,咱们如今若是想要爬虫启动,那么只须要输入命令:

1$ curl http://119.75.216.20:6800/schedule.json -d project=<project name> -d spider=<spider name>
复制代码

咱们这里输入的命令则是:

1$ curl http://119.75.216.20:6800/schedule.json  -d project=DailyWeb -d spider=Caoliu
复制代码

输入完,本地的terminal会呈现:


咱们在浏览器里,访问服务器的6800端口,就可以在网页的Jobs里面看到爬虫工做状态了:


能够看到,爬虫的进度在Running里面,当爬虫爬完了,会在这个里面:


咱们退到上级页面,从Log里面看,就发现有一条log文件。


23K的log文件,


文件的目录在:

1./logs/DailyWeb/Caoliu/290bee7261c411e8872052540089e098.log
复制代码

打开以后,就能看到刚才爬虫运行时候留下来的Log了。关于Log怎么打或者打什么,这个是Scrapy框架里本身写好的,很是方便,直接导入python的logging库,按照标准方法打印就能够。

那么,咱们应该如何取消一个Job呢?输入命令:

1 curl http://119.75.216.20:6800/cancel.json -d project=<project name> -d job=<job id>
复制代码

上面的job id,就是在Jobs页面里面看到的。

若是要移除一个工程,命令则是:

1curl http://119.75.216.20:6800/delproject.json -d project=<project>
复制代码

这里说一个奇淫巧技,因为服务器的scrapyd须要后台运行,这里我采用了# setsid scrapyd命令来后台开启服务,这样关闭窗口后仍能进行链接。须要结束scrapyd进程时,利用# ps -ef | grep -i scrapyd 查看PID号,再# kill -9 PID结束进程。

如果想要固定的去执行爬虫,这里可使用Linux自带的crontab。这个我还没研究,应该不难,等下一步了能够放出来给你们。

OK,到此为止,若是你能跟着个人步骤一步一步作到这里,首先恭喜你,说明你很优秀,颇有毅力,绝对是个编程的料,并且还有可能成为

Python大神
对于优秀的人而言,奖励是必须的,能够关注『皮克啪的铲屎官』,回复『服务器爬虫』,便可得到爬虫的源码,同时,能够多试试回复几回,说不定有惊喜呢。

最后感言一下,为何要写这种手把手,一步一步来操做的文章,是由于,好多同窗都据说过Python,并且对Pyton抱有期待,想去学。可是,好多同窗非科班出身,或者以前就历来没学习过编程,哪像咱们这种编程的老油条,拿到一门语言都有本身独特的学习方法可以快速掌握。这些同窗就很困惑,由于你们都说Python好,Python好学,Python容易,Python简单,Python能干不少事情事情。。。可是当本身面对Python的时候,Python确是一座大山。没有人给他指引道路,没有人告诉他,那片丛林第几棵树和第几棵树之间有通往下一关的道路,致使他们很苦恼,很困惑,从而就会打击学习编程的积极性,就会产生“Python这么简单我都不会,看来我不是学习编程的料”这种负能量的想法。同窗!这样想是不对的!学习编程,你要坚持啊!罗马并不是一日建成的,任何看似熟练的技能,都是背后日日夜夜反复打磨出来的结果。你若是对Python感兴趣,喜欢学Python,我能够给你带路,我写这种手把手的文章,就是为了给大家引路,让更多的同窗来投入到他们热爱的编程学习中,体验编程的快乐。如果你想学习,想改变本身,或者周围有同窗想学习编程,请你手动把这篇文章分享出去,我但愿,经过有趣的实战Python项目,可以让Python编程再也不那么空洞,并且,新手来了能够根据个人步骤一步一步来,感觉程序运行起来的快乐。您的分享,就是对我最大的支持。

OK,以上就是这期手把手一步一步将Scrapy爬虫部署到服务器上的教程。

周末写了一天。出文不易,但愿你们喜欢。

推荐阅读

【Python实战】用代码在1024论坛实现自动回贴,快速升级,有彩蛋
【Python实战】手把手超详细教程教你Scrapy爬达盖尔社区,有彩蛋
【Python实战】用Scrapy编写“1024网站种子吞噬爬虫”,送福利
【Python实战】用代码来访问1024网站,送福利

                   


                       关注这个神奇的公众号,里面会有1024的神奇代码哦

                                    

相关文章
相关标签/搜索