這個項(xiàng)目花了近一個月 有點(diǎn)久
主要卡殼在不熟悉云服務(wù)器相關(guān)操作和免費(fèi)動態(tài)IP池構(gòu)造上
又是那種“卡住了 不行 一定要搞定 怎么能先跳過呢” 然后就死磕在一個問題上 浪費(fèi)了不少時間
主要有兩個地(坑)方值得說明下 :
-
京東搜索頁對阿里云進(jìn)行了IP屏蔽
本地能夠成功爬取到數(shù)據(jù) 但放到阿里云調(diào)度就沒有數(shù)據(jù)
添加User-Agent卓研、Cookies 依然沒有下載到數(shù)據(jù)
為什么搂根!這不科學(xué)甲锡!本地都能抓取 云服務(wù)器就沒有
然后開始賢者時刻三步走:我是誰舅逸、我在哪奏瞬、我要到哪里去
最后定位到問題 IP 找了個免費(fèi)IP代理上 服務(wù)器調(diào)度
Boom Shakalaka 完美洽议! 終于有數(shù)據(jù)了騰訊云就沒有被屏蔽 簡直神仙打架 影響到凡人的性生活 譬如我 好死不死 我偏偏就買了阿里云 好死不死 我偏偏就想先爬京東的 然后就撞在了一起就成了坑 當(dāng)然發(fā)現(xiàn)定位這個坑 也花了不少時間 為了埋這個坑 結(jié)果又挖了動態(tài)IP池的坑
動態(tài)IP池
網(wǎng)上有很多免費(fèi)的代理網(wǎng)站 可以獲取免費(fèi)IP github找到大神的動態(tài)IP池項(xiàng)目就從一堆代理網(wǎng)站中獲取IP 并測試是否可行 當(dāng)然大多數(shù)是沒用的 這些免費(fèi)IP簡直就是老弱病殘荐绝、殘花敗柳、蝦兵蟹將 能打兩下就打(它真的就只能打兩下) 不能打就扔
實(shí)測總計獲取的五六百個IP 能用就幾個 這還僅僅是能用的 在能用的中連接速度又是慢的一b 經(jīng)常性timeout
誰讓我是平民玩家 氪金玩家還是去買IP包月套餐吧 既穩(wěn)定又快 也就幾百塊/月 微笑臉
下面是正經(jīng)的整個項(xiàng)目過程
1.云服務(wù)器配置
2.Scrapy爬蟲擼代碼
3.ProxyPool動態(tài)IP代理池
4.云服務(wù)器調(diào)度
工具
- Pycharm
- Xshell
- Python 3.6
1.云服務(wù)器配置
1.1 配置安全組(阿里云)
購買阿里云/騰訊云/吧啦吧啦云后 首先配置下安全組開端口 需自行添加的的端口有SSH:22旷痕、HTTP:80碳锈、HTTPS:443、Scrapyd:6800欺抗、Flask:5000(可選)售碳、Redis(可選)1.2 Xshell連接云服務(wù)器(Win下)
開了SSH:22端口后 就可以用Xshell連接 連接輸入公網(wǎng)IP 用戶身份驗(yàn)證輸入云服務(wù)器用戶名和密碼
當(dāng)然也可以選擇其他方法
1.3配置服務(wù)器環(huán)境
在Xshell連接服務(wù)器后 搭建相關(guān)環(huán)境
1) 安裝 Java 8
// 查看新系統(tǒng)是否安裝java環(huán)境
$ 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
// 創(chuàng)建安裝目錄
$ 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
// 創(chuàng)建軟連
$ 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配置文件
vim default_scrapyd.conf
來編輯這個文件B. 啟動Scrapyd
輸入命令
$ '/usr/local/python3/bin/scrapyd'
或者讓 Scrapyd 能夠在后臺運(yùn)行十拣,不至于關(guān)閉了控制臺,程序也關(guān)掉了(Xshell下)
$ nohup '/usr/local/python3/bin/scrapyd' & 后臺運(yùn)行
在瀏覽器中輸入網(wǎng)址http://XXX.XXX.XX.XXX:6800/
公網(wǎng)IP和端口號 出現(xiàn)如下界面說明scrapyd啟動成功
ps -ef | grep scrapyd
來找到 Scrapy 的進(jìn)程 ID 是多少夭问,然后再通過命令 kill <進(jìn)程ID> ,kill 掉進(jìn)程
4) 安裝MongoDB
項(xiàng)目的數(shù)據(jù)曹铃,都是要存儲在 MongoDB 上缰趋,所以,我們這里需要在云服務(wù)器?上安裝MongoDB
// 創(chuàng)建mongodb-org-3.6.repo文件,因?yàn)槲覀円脃um裝
$ 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 文件添加一下內(nèi)容
[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
繼續(xù)修改 /etc/mongod.conf
文件
找到下面這句埠胖,添加的是內(nèi)網(wǎng)IP地址 注意是內(nèi)網(wǎng)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
// 關(guān)閉MongoDB
$ sudo service mongod stop
// 重啟MongoDB
$ sudo service mongod restart
推薦使用 Robo 3T 這個可視化 MongoDB 的軟件查看數(shù)據(jù)庫
安裝配置 Robomongo
可以去官網(wǎng) 下載最新程序
配置連接 先在connection菜單中填寫內(nèi)網(wǎng)IP
然后在SSH菜單填寫公網(wǎng)IP淳玩、賬號密碼
5) 安裝Redis(可選)
官網(wǎng)下載
$ 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
添加進(jìn)程守護(hù) 后臺運(yùn)行 更改為yes
bind 127.0.0.1
更改為0.0.0.0
#requirepass foobared
去掉注釋 修改新密碼
redis-server redis.conf
使用 RedisDesktopManager 這個可視化 Redis的軟件查看數(shù)據(jù)庫 記得在服務(wù)器安全組開放6379端口
云服務(wù)器配置到此就結(jié)束
終于可以擼碼