爬淘宝的商品信息下 (下) -- 实现定时任务爬取
爬淘宝的商品信息下 (下) -- 实现定时任务爬取
上回我们讲到用scrapy爬取淘宝的商品信息, 今天的任务是实现爬虫的周期作业功能。商品信息的交易量评论数,等等,会处在变动之中,因此需要爬虫能够在每天预设的时间爬取网页。
假设,我们现在的任务是,要爬虫在凌晨3点,也就是 每天的凌晨3:00,(对,就是那个月黑风高,四下无人的夜晚,悄悄的,爬虫它来了,然后悄悄地又走了,)进行一次爬取任务。
main.py就是我们要写的文件,话说,scrapy爬虫,不一定非得要用scrapy命令才能去调用,我们可以直接从脚本中调用,嗯,很好,狠喜欢。
整个scrapy项目的结构如下所示,看到main.py了吗?没错,直接放在根目录下就可以了,妥妥的,就是这么简单
D:\Code\TB>tree /f
文件夹 PATH 列表
卷序列号为 0000007D E659:980C
D:.
│ main.py
│ scrapy.cfg
│
├─.idea
│ │ misc.xml
│ │ modules.xml
│ │ TB.iml
│ │ workspace.xml
│ │
│ └─inspectionProfiles
│ profiles_settings.xml
│
├─results
│ result.2017-05-11.csv
│
└─TB
│ items.py
│ middlewares.py
│ pipelines.py
│ settings.py
│ __init__.py
│
├─spiders
│ │ taobao.py
│ │ __init__.py
│ │
│ └─__pycache__
│ taobao.cpython-36.pyc
│ __init__.cpython-36.pyc
│
└─__pycache__
items.cpython-36.pyc
pipelines.cpython-36.pyc
settings.cpython-36.pyc
__init__.cpython-36.pyc
下面直接上mian.py的代码,废话不多说
from scrapy.utils.project import get_project_settings
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
from twisted.internet import reactor
from apscheduler.schedulers.background import BlockingScheduler
import multiprocessing
scheduler = BlockingScheduler()
def release_spiders():
configure_logging({'LOG_FORMAT': '%(levelname)s: %(message)s'})
settings = get_project_settings()
runner = CrawlerRunner(settings)
for spider in runner.spider_loader.list():
runner.crawl(spider)
d = runner.join()
d.addBoth(lambda _: reactor.stop())
reactor.run()
@scheduler.scheduled_job('cron', hour=3, minute=0, id="daily_crawl")
def run():
process = multiprocessing.Process(target=release_spiders)
process.start()
if __name__ == "__main__":
scheduler.start()
除了scrapy以外,还用到了多进程multiprocess包,定时任务调度apscheduler包,貌似前一个包,默认就有,而后面一个,要自己安装的。。。。
为什么要开启多进程。。。。?你以为我想啊,折腾了好久,发现如果不开多进程的话,webdriver不会自动关闭,而且,pipline中的数据存储也不工作,神烦啦!。。。。。。。所以,还是再开个进程,让定时任务和爬取任务分开,各玩各的!
@scheduler.scheduled_job('cron', hour=3, minute=0, id="daily_crawl")
这个地方就是设置定时任务的执行时间点,24小时制,所以,会在每日的凌晨3点0分,进行一次爬取任务,半夜人少,网速快,偷偷地,刺激,没毛病。
好了,就这样了,具体代码,已经上传到github了,下载地址https://github.com/Levstyle/TaobaoSpider, 只要执行main.py代码文件即可
如果有毛病,请直接跟俺说啊,反正我也不会改的
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步