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爬虫撸代码
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容