Scrapy-02(系列篇1)-爬虫&云服务器定时调度(以京东零食为例)

这个项目花了近一个月 有点久
主要卡壳在不熟悉云服务器相关操作和免费动态IP池构造上
又是那种“卡住了 不行 一定要搞定 怎么能先跳过呢” 然后就死磕在一个问题上 浪费了不少时间
主要有两个地(坑)方值得说明下 :

  • 京东搜索页对阿里云进行了IP屏蔽
    本地能够成功爬取到数据 但放到阿里云调度就没有数据
    添加User-Agent、Cookies 依然没有下载到数据
    为什么!这不科学!本地都能抓取 云服务器就没有
    然后开始贤者时刻三步走:我是谁、我在哪、我要到哪里去
    最后定位到问题 IP 找了个免费IP代理上 服务器调度
    Boom Shakalaka 完美! 终于有数据了

腾讯云就没有被屏蔽 简直神仙打架 影响到凡人的性生活 譬如我 好死不死 我偏偏就买了阿里云 好死不死 我偏偏就想先爬京东的 然后就撞在了一起就成了坑
当然发现定位这个坑 也花了不少时间 为了埋这个坑 结果又挖了动态IP池的坑

  • 动态IP池
    网上有很多免费的代理网站 可以获取免费IP github找到大神的动态IP池项目就从一堆代理网站中获取IP 并测试是否可行 当然大多数是没用的
    这些免费IP简直就是老弱病残、残花败柳、虾兵蟹将 能打两下就打(它真的就只能打两下) 不能打就扔
    实测总计获取的五六百个IP 能用就几个 这还仅仅是能用的 在能用的中连接速度又是慢的一b 经常性timeout
    谁让我是平民玩家 氪金玩家还是去买IP包月套餐吧 既稳定又快 也就几百块/月 微笑脸

下面是正经的整个项目过程

1.云服务器配置
2.Scrapy爬虫撸代码
3.ProxyPool动态IP代理池
4.云服务器调度

工具

  • Pycharm
  • Xshell
  • Python 3.6

1.云服务器配置

1.1 配置安全组(阿里云)

购买阿里云/腾讯云/吧啦吧啦云后 首先配置下安全组开端口
需自行添加的的端口有SSH:22、HTTP:80、HTTPS:443、Scrapyd:6800、Flask:5000(可选)、Redis(可选)

阿里云端口

1.2 Xshell连接云服务器(Win下)

开了SSH:22端口后 就可以用Xshell连接 连接输入 公网IP 用户身份验证输入云服务器 用户名和密码
当然也可以选择其他方法

image.png

image.png

1.3配置服务器环境

在Xshell连接服务器后 搭建相关环境

1) 安装 Java 8
// 查看新系统是否安装java环境
$ yum list installed |grep java
// 在线查看java的安装包列列表
$ yum -y list java*
// 安装选择的java版本ram包,我么这⾥里里安装的是 java 1.8
$ yum -y install java-1.8.0-openjdk
// 安装完成之后,再检查⼀一下 java 版本
$ java -version
2) 安装 Python 3
// 安装依赖包
$ yum -y groupinstall "Development tools"
$ 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
// 下载 Python 3.6.2
$ wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
// 创建安装目录
$ mkdir /usr/local/python3
// 安装 gcc
$ yum -y install gcc
// 安装 Python 3.6.2
$ tar -xvJf Python-3.6.2.tar.xz
$ cd Python-3.6.2
$ ./configure --prefix=/usr/local/python3
$ make && make install
// 创建软连
$ ln -s /usr/local/python3/bin/python3 /usr/bin/python3
$ ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
// 测试 python3
$ python3 --version
3) 安装 Python 库
$ pip3 install scrapy
$ pip3 install bs4
$ pip3 install pymongo
$ pip3 install scrapyd
$ pip3 install scrapyd-client
A.Scrapyd 的配置

Scrapyd配置文件

image.png

然后,我们进入下面的路路径, 通过命令 vim default_scrapyd.conf来编辑这个文件

image.png

默认端口号6800 在前面的[阿里云安全组配置中]已经开放此端口 这里的端口号,必须在安全组里面开放出来,才能访问,否则网页访问 Scrayd
的控制台界面是不行的。

B. 启动Scrapyd

输入命令
$ '/usr/local/python3/bin/scrapyd'
或者让 Scrapyd 能够在后台运行,不至于关闭了控制台,程序也关掉了(Xshell下)
$ nohup '/usr/local/python3/bin/scrapyd' & 后台运行
在浏览器中输入网址http://XXX.XXX.XX.XXX:6800/ 公网IP和端口号 出现如下界面说明scrapyd启动成功

Scrapyd浏览器页面

如果需要关闭,则首先输入指令ps -ef | grep scrapyd 来找到 Scrapy 的进程 ID 是多少,然后再通过命令 kill
<进程ID> ,kill 掉进程

4) 安装MongoDB

项目的数据,都是要存储在 MongoDB 上,所以,我们这里需要在云服务器器上安装MongoDB

// 创建mongodb-org-3.6.repo文件,因为我们要用yum装
$ touch /etc/yum.repos.d/mongodb-org-3.6.repo
// 编辑mongodb-org-3.6.repo文件
$ vim /etc/yum.repos.d/mongodb-org-3.6.repo

为 mongodb-org-3.6.repo 文件添加一下内容

[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-
org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

修改完成 :wq保存退出 接着输命令

// 安装 MongoDB
$ sudo yum install -y mongodb-org

安装成功后 配置mongdb文件

// 修改/etc/selinux/config
$ vim /etc/selinux/config

我们需要把 etc/selinux/config 文件里面的 SELINUX改为 SELINUX=permissive
继续修改 /etc/mongod.conf 文件
找到下面这句,添加的是 内网IP地址 注意是 内网IP 地址

net:
     port: 27017
    bindIp: 127.0.0.1, XX.XXX.XXX.XX

然后 wq! 退出,接着回来敲命令

$ chown -R mongod:mongod /var/lib/mongo
$ chown -R mongod:mongod /var/log/mongodb
$ mkdir /data/db
// 启动MongoDB
$ sudo service mongod start
// 关闭MongoDB
$ sudo service mongod stop
// 重启MongoDB
$ sudo service mongod restart

推荐使用 Robo 3T 这个可视化 MongoDB 的软件查看数据库

安装配置 Robomongo

可以去官网 下载最新程序
配置连接 先在connection菜单中填写 内网IP
然后在SSH菜单填写 公网IP 、账号密码

image.png

这是连接成功后的数据库

image.png

5) 安装Redis(可选)

官网下载

$ wget http://download.redis.io/releases/redis-5.0.0.tar.gz
$ tar xzf redis-5.0.0.tar.gz
$ cd redis-5.0.0
$ make

修改配置文件redis.conf
protected-mode yes 更改为no
daemonize no 添加进程守护 后台运行 更改为yes
bind 127.0.0.1 更改为0.0.0.0
#requirepass foobared去掉注释 修改新密码

image.png

image.png

image.png

更改后 启动服务
redis-server redis.conf
使用 RedisDesktopManager 这个可视化 Redis的软件查看数据库 记得在服务器安全组开放6379端口

image.png

云服务器配置到此就结束

终于可以撸码

下一篇 Scrapy爬虫撸代码

文章来源于转载, 如有疑问, 请联系我,转载地址:https://www.jianshu.com/p/d70b7fe36646