手记

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=1enabled=1gpgkey=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



作者:丨像我这样的人丨
链接:https://www.jianshu.com/p/d70b7fe36646


0人推荐
随时随地看视频
慕课网APP