[]([] gitee.com/chenxuelei/…) gitee爬虫服务项目地址
windows下启动scrapy
本地安装配置python环境,当前使用python3.8.2
安装scrapy:
pip install scrapyd
pip install scrapyd-client
创建一个爬虫项目:scrapy startproject test_scrapy
test_scrapy
--items.py 项目中的 item 文件,定义字段
--pipelines.py 项目中的 piplines 文件,存储数据
--settings.py 项目的设置文件
--spiders/ 放置 spiders 代码的目录\
启动单个爬虫
--cd test_scrapy
--scrapy crawl TestSpider
scrapy.cfg 配置
#.cfg文件中不能出现中文,注释了也不行,项目会起不来
[settings]
default = test_scrapy.settings
[deploy:zhengwu]
url = http://localhost:6800/ #配置scrapyd访问地址,本地是localhost,线上是开放的ip地址
project = test_scrapy #配置项目名称
setting.py 配置,可以配置一些常量、爬虫并发等
BOT_NAME = "test_scrapy"
SPIDER_MODULES = ["test_scrapy.spiders"]
NEWSPIDER_MODULE = "test_scrapy.spiders"
ROBOTSTXT_OBEY = True
DOWNLOAD_DELAY = 3
# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
}
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 5
AUTOTHROTTLE_MAX_DELAY = 60
AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
middleware-settings
# ******************************新增加配置******************************
# 通用爬虫
# SCHEDULER_PRIORITY_QUEUE = 'scrapy.pqueues.DownloaderAwarePriorityQueue'
# 提高并发量 并发量实际上受内存和 CPU 的限制,建议实际测试,选择最适合的数字
# CONCURRENT_REQUESTS = 100
# CONCURRENT_REQUESTS_PER_DOMAIN = 100
# 提高线程池的大小
REACTOR_THREADPOOL_MAXSIZE = 20
# 减少日志
# LOG_LEVEL = 'INFO'
LOG_LEVEL = 'ERROR'
# 禁用 Cookies 和自动重试
# COOKIES_ENABLED = False
# RETRY_ENABLED = False
# 降低请求超时时间,禁用自动跳转
# DOWNLOAD_TIMEOUT = 10
REDIRECT_ENABLED = False
# Mysql
MYSQL_HOST = '47.98.152.170'
MYSQL_DBNAME = 'fair-competition'
MYSQL_USER = 'root'
MYSQL_PASSWORD = 'Ance@2023#'
# robots 协议,True的话是遵守协议,所以要False关掉
ROBOTSTXT_OBEY = False
SPIDER_CORN_SETTINGS=1
scrapyd 相关api执行
//启动某个爬虫
curl.exe http://localhost:6800/schedule.json -d project=test_scrapy -d spider=TestSpider
1、获取状态
http://localhost:6800/daemonstatus.json
2、获取项目列表
http://localhost:6800/listprojects.json
3、获取项目下已发布的爬虫列表
http://localhost:6800/listspiders.json?project=myproject
5、获取爬虫运行状态
http://localhost:6800/listjobs.json?project=myproject
6、启动服务器上某一爬虫(必须是已发布到服务器的爬虫)
http://localhost:6800/schedule.json (post 方式,data={"project":myproject,"spider":myspider})
7、删除某一版本爬虫
http://localhost:6800/delversion.json
(post 方式,data={"project":myproject,"version":myversion})
8、删除某一工程,包括该工程下的各版本爬虫
http://localhost:6800/delproject.json(post 方式,data={"project":myproject}
setting.py 同层级下可以创建run.py,多个spider不想一个一个执行命令,将多个spider的执行写在run.py中,执行run.py即可
from scrapy.cmdline import execute
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from test_scrapy.spiders.JiangxiSpider import BlogSpider
from test_scrapy.spiders.NanchangSpider import TestSpider
def run_spider():
process = CrawlerProcess(get_project_settings())
# 执行所有 spider
for spider_name in process.spider_loader.list():
print(spider_name)
process.crawl(spider_name)
process.start()
def main():
# 运行爬虫
run_spider()
if __name__ == "__main__":
main()
将scrapyd通过greapy部署,有可视化的操作管理页面
windows 安装部署 (参考链接:blog.csdn.net/qq_43557600…
1、安装 python 3.8
2、pip install 相关依赖,工具类、gerapy、scrapy (如果包有缺失,缺少什么就 install 什么)
pip install beautifulsoup4==4.12.3
pip install Scrapy==2.11.2
pip install beautifulsoup4==4.12.3
pip install beautifulsoup4==4.12.3
pip install scrapyd==1.4.3
pip install scrapyd-client==1.2.3
pip install snowflake==0.11.0
pip install toollib==1.5.6
pip install gerap==0.9.13
pip install PyMySQL==1.1.1
3、启动 scrapyd
cmd 中执行 scrapyd
4、新建文件,进入建好的文件夹,打开命令行窗口输入 gerapy init
进入 gerapy 目录下,输入 gerapy migrate
# gerapy initadmin # 这是初始化用户,账号密码都是 admin,这样一般用在测试环境中
gerapy createsuperuser # 创建自定义账号
gerapy runserver 127.0.0.1:8000 # 在本地也可以直接 gerapy ruserver 就行
本地启动好后,访问localhost:8000 默认登录账号及密码:admin/admim
访问localhost:8000/admin 可以修改密码
(1)创建一个主机管理
(2)进入项目管理,将本地创建的scrapy项目上传到上去
(3)任务管理里,可以对每个spider设置定时任务
linux下启动scrapy(docker方式,方便管理版本)
Linux 部署问题解决 (参考链接:blog.csdn.net/weixin_4468…
将scrapyd服务打成镜像,要提前安装需要的依赖
#启动greapy
docker pull germey/gerapy
mkdir -p /home/python_xlc/gerapy
docker run -d --name gerapy -v /home/python_xlc/gerapy:/app/gerapy -p 8000:8000 germey/gerapy
#启动scrapyd
#保存自己的scrapyd镜像
docker save python_fcm_spider_runc:1.0.1 |gzip > python_fcm_spider_runc.tgz
docker run -d -p 6800:6800 python_fcm_spider_runc:1.0.1
#本地文件部署到 gerapy 服务中
打包 scrapy 项目为 zip,可以上传到 greapy 管理系统中,打包的是 gerapy 文件夹下 projects 下的 test_scrapy 文件夹