scrapy的爬虫在运行时,需要暂时停止运行,并在下一次从暂停的地方继续爬取的方法:
1.打开cmd进入虚拟环境,cd到scrapy的main.py目录下;
2.在cmd下输入以下命令
scrapy crawl 爬虫名称 -s JOBDIR=保存进程的文件夹目录
比如我要运行的spider的name为zhihu,文件夹目录是scrapy目录下的job_info/001(001表示这是一次爬取任务,重新新建任务需要重新建立目录,比如002),我需要运行的指令为:
scrapy crawl jobbole -s JOBDIR=job_info/001
3.运行过程中按下Ctrl+c暂停任务,等待处理完未完成的进程(按下两次Ctrl+c为强制结束进程);
4.结束后显示:
[scrapy.core.engine] INFO: Spider closed (shutdown)
5.下次需要重启的时候,输入与第二步相同的命令。
settings 里自带参数,比如:
DOWNLOAD_TIMEOUT = 300
如果觉得不能满足要求就写个继承 DownloadTimeoutMiddleware 的类就好
https://doc.scrapy.org/en/1.4/topics/downloader-middleware.html#module-scrapy.downloadermiddlewares.downloadtimeout
顺带蛋疼的话还可以利用下面这个类获取状态写进度条
class scrapy.downloadermiddlewares.stats.DownloaderStats