1.環(huán)境搭建
1.1 虛擬機安裝
豆瓣源安裝提速:
pip install -i https://pypi.doubanio.com/simple **
- step.1 安裝虛擬機
pip install virtualenv
- step.2 安裝虛擬機管理工具
pip install virtualenvwrapper / virtualenvwrapper-win 【windows環(huán)境下】
1.2 配置虛擬環(huán)境
-
Windows環(huán)境下
- step.1 配置環(huán)境變量
添加WORKON_HOME系統(tǒng)變量配置路徑為虛擬機所在位置 - step.2 創(chuàng)建虛擬機
mkvirtualenv 【虛擬機名稱】 或指定python版本創(chuàng)建 mkvirtualenv -p=【Python安裝路徑】 【虛擬機名稱】
- step.1 配置環(huán)境變量
-
Linux環(huán)境下
- step.1 查找virtualenvwrapper
sudo find / -name virtualenvwrapper.sh
- step.2 配置環(huán)境變量
vim ~/.bashrc
添加
WORKON_HOME=$HOME/.virtualenvs
source */*/virtualenvwrapper.sh
- step.2 創(chuàng)建虛擬機
mkvirtualenv --python=【Python安裝路徑】 【名稱】
- step.1 查找virtualenvwrapper
-
共用命令
- 退出虛擬環(huán)境
deactivate
- 查看虛擬機列表
workon
- 進入虛擬機
workon 【名稱】
- 退出虛擬環(huán)境
2.爬蟲項目
2.1 創(chuàng)建并進入虛擬機
mkvirtualenv --python=/usr/bin/python3 py3scrapy
2.2 安裝框架
使用豆瓣源安裝scrapy
pip install -i https://pypi.doubanio.com/simple scrapy
若報import錯誤:
- 進入 https://www.lfd.uci.edu/~gohlke/pythonlibs/
- 查找所缺失的包并下載
- 安裝
pip install *.whl
2.3 創(chuàng)建Scrapy工程
- 進入虛擬環(huán)境
workon py3scrapy
- 創(chuàng)建工程
scrapy startproject articleSpider
- 生成模版
scrapy genspider hbut hbut.91wllm.com
生成項目結(jié)構(gòu)如下:
目錄結(jié)構(gòu).png
3.自動運行
3.1 使用Timer
首先在scrapy.cfg同級目錄下新建main.py
import os
from scrapy.cmdline import execute
import sys
import schedule
import time
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
//使用timer
while True:
os.system("scrapy crawl hbut")
time.sleep(60) //每60秒運行一次
3.2 使用Schedule
- 安裝Schedule
pip install -i https://pypi.doubanio.com/simple schedule
- 修改main.py如下:
import os
from scrapy.cmdline import execute
import sys
import schedule
import time
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
//使用schedule 需安裝
def job():
print("I'm working...")
os.system("scrapy crawl hbut")
// 每10分鐘執(zhí)行
schedule.every(10).minutes.do(job)
// 每一小時執(zhí)行
schedule.every().hour.do(job)
// 每天15:58分執(zhí)行
schedule.every().day.at("15:58").do(job)
// 每周一的當前時間執(zhí)行
schedule.every().monday.do(job)
// 每周三13:15執(zhí)行
schedule.every().wednesday.at("13:15").do(job);
while True:
schedule.run_pending()
time.sleep(1)
3.3 使用Crontab
- 編寫要執(zhí)行的命令腳本cron.sh
#! /bin/sh
export PATH=$PATH:/usr/local/bin
cd /home/testCron
nohup scrapy crawl example >> example.log 2>&1 &
- 執(zhí)行阎肝,crontab -e效拭,規(guī)定crontab要執(zhí)行的命令和要執(zhí)行的時間頻率,這里我需要每一分鐘就執(zhí)行scrapy crawl example這條爬取命令:
*/1 * * * * sh /home/testCron/cron.sh
- 使用main.py,執(zhí)行命令:
*/1 * * * * python /home/articleSpider/main.py
crontab的常見格式:
crontab格式.png
4.運行所有爬蟲
1.在spiders目錄的同級目錄下創(chuàng)建一個commands目錄,并在該目錄中創(chuàng)建一個crawlall.py,將scrapy源代碼里的commands文件夾里的crawl.py源碼復制過來,只修改run()方法即可:
def run(self, args, opts):
# 獲取爬蟲列表
spd_loader_list = self.crawler_process.spider_loader.list()
print(spd_loader_list)
# 遍歷爬蟲
for name in spd_loader_list or args:
self.crawler_process.crawl(name, **opts.spargs)
print(name)
self.crawler_process.start()
還得在里面加個init.py文件,目錄結(jié)構(gòu)如下:
目錄結(jié)構(gòu).png
- settings.py配置文件還需要加一條龟梦。
COMMANDS_MODULE = '項目名稱.目錄名稱'
COMMANDS_MODULE='articleSpider.commands'
- 執(zhí)行
cmdline.execute("scrapy crawlall".split())