---------scrapyd部署爬蟲---------------
1.編寫爬蟲
2.部署環境
pip install scrapyd
pip install scrapyd-client
啟動scrapyd的服務:cmd:>scrapyd(必須處於開啟狀態)
在爬蟲根目錄執行:scrapyd-deploy,如果提示不是內部命令,需要修改配置文件。
3.發布工程到scrapyd
修改scrapy.cfg,去掉url前的#
進入到scrapy項目根目錄,執行:scrapyd-deploy <target> -p <projectname>提示:(target:scrapy.cfg中[deploy:***])(projectname:scrapy.cfg中project = XXX)
(#url中的#去掉)
4.啟動爬蟲
第一種方法:Django中view.py
class StartSpider(View):
def get(self,request):
url = 'http://localhost:6800/schedule.json'
data = {'project': 'ScrapyAbckg', 'spider': 'abckg'}
print( requests.post(url=url, data=data))
return JsonResponse({'result':'OK'})
第二種方法:(命令式啟動爬蟲:curl http://localhost:6800/schedule.json -d project=項目名 -d spider=爬蟲名)
5.啟動django
cmd:python manage.py runserver
----------------scrapyd 管理爬蟲接口----------------------
1、獲取狀態
http://127.0.0.1:6800/daemonstatus.json
2、獲取項目列表
http://127.0.0.1:6800/listprojects.json
3、獲取項目下已發布的爬蟲列表
http://127.0.0.1:6800/listspiders.json?project=myproject
4、獲取項目下已發布的爬蟲版本列表
http://127.0.0.1:6800/listversions.json?project=myproject
5、獲取爬蟲運行狀態
http://127.0.0.1:6800/listjobs.json?project=myproject
6、啟動服務器上某一爬蟲(必須是已發布到服務器的爬蟲)
http://localhost:6800/schedule.json
(post方式,data={"project":myproject,"spider":myspider})
7、刪除某一版本爬蟲
http://127.0.0.1:6800/delversion.json
(post方式,data={"project":myproject,"version":myversion})
8、刪除某一工程,包括該工程下的各版本爬蟲
(運行中爬蟲無法刪除)
http://127.0.0.1:6800/delproject.json
(post方式,data={"project":myproject})
9.取消運行中的爬蟲
http://127.0.0.1:6800/cancel.json
(post方式,data={"project":myproject,"job":jobid})
--------------django+scrapy-----------------------------
1.創建django項目,並編寫models.py,啟動django項目
2.Django項目根目錄下創建Scrapy項目
(這是scrapy-djangoitem所需要的配置)
配置Django嵌入,在Scrapy的settings.py中加入以下代碼:
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = 'django項目名.settings'
import django
django.setup()
3.編寫爬蟲
4.item.py中引入Django模型類(pip install scrapy-djangoitem)
from scrapy_djangoitem import DjangoItem
from 子應用 import models
class ScrapyabckgItem(DjangoItem):
# 此處必須起名為django_model,主爬蟲中使用item['title']=xxx
django_model = models.AbckgModel
5.pipelines.py中調用save()
class ScrapyabckgPipeline(object):
def process_item(self, item, spider):
# 插入到數據庫
item.save()
return item #將item傳給下一個管道繼續處理
6.啟動爬蟲(用命令,並非scrapyd啟動):scrapy crawl abckg
7.刷新django-admin后台
---------------Gerapy 管理界面--------------
安裝:
pip install gerapy
配置環境變量:
C:\Users\Administrator\AppData\Roaming\Python\Python36\Scripts
>gerapy init 初始化工作目錄
>cd gerapy
>gerapy migrate 遷移生成數據庫
>gerapy runserver 啟動服務
http://127.0.0.1:8000 訪問界面
---------------Gerapy 管理界面使用--------------
添加client:連接遠程或本機的scrapyd服務(前提是scrapyd處於開啟狀態)
添加Projects:將scarpy項目直接放到 /gerapy/projects,刷新頁面
為什么部署呢?
部署會讓項目更穩定,更高效,增大訪問量
scrapyd部署 和 gerapy部署 的區別
相比scrapyd部署的只能查看狀態,頁面簡陋 gerapy更人性化,頁面簡潔,可操作性強
總結流程:
1啟動scrapyd:
命令:scrapyd
2啟動gerapy:
命令:gerapy runserver
3部署爬蟲scrapy 到 scrapyd,在爬蟲根目錄發布爬蟲:
命令: scrapyd-deploy <target> -p 項目名稱
4訪問gerapy:
地址:127.0.0.1:8000
5在gerapy頁面 :
主機管理 --》創建 --》連接scrapyd
6在gerapy頁面 :
點擊調度 -----》 會展示出所有的已發布爬蟲
7隨意對這些爬蟲進行 監管,運行
ok! 搞定啦!CentOs 部署爬蟲在 linux 下同理,只是ip不同罷了 就這!