让你的爬虫像人一样打卡上下班。。。
前期接到的奇葩需求,要让爬虫像人一样打卡工作,工作还得有快有慢,wtf,想了半天,写个装饰器算了,基本能满足需求,大家还有更好的方法吗,求指教。
目标网站需账号访问,账号收费(贵,冷门),访问频繁直接封号。
def jobstatus(func):
'''
爬虫的工作状态装饰器
周一至周五
09:00-18:00
小时数是偶数
每分钟请求30次左右
小时数是奇数
每分钟请求10次左右
其余时间等待
'''
@wraps(func)
def inner(self, response):
while 1:
# 开始时间
time_on = datetime.strptime(str(datetime.now().date()) + '09:00', '%Y-%m-%d%H:%M')
# 结束时间
time_off = datetime.strptime(str(datetime.now().date()) + '18:00', '%Y-%m-%d%H:%M')
# 当前星期
week_now = datetime.now().weekday()
# 当前时间
time_now = datetime.now()
# 当前小时
hour_now = datetime.now().hour
# 判断当前星期是否为工作日
if week_now in list(range(5)):
# 判断当前时间是否为工作时间
if time_on <= time_now <= time_off:
if hour_now % 2 == 0
time.sleep(random.choice())
return func(self, response)
else
time.sleep(random.choice())
return func(self, response)
else:
time.sleep(3600)
else
time.sleep(86400)
return inner
请问你们考虑过爬虫的感受吗?还有,应该细化到账号或者进程或者进程吧?比如你起了多个爬虫 1、账号特贵,只有一个
2、用的scrapy,只开一个线程 编一个定时调度平台不香吗?
如果文件数不多,Linux Shell 更适合
文件数多,还要做监控和扩展之类的话,用 Flask 写一个服务,将 Apscheduler 和 Scrapyd 继承到服务中,这样就是一个完整的爬虫项目部署和调度管理平台了。跳槽还加分呢! 只开一个线程没必要用scrapy啊,这种细化的需求还是自己写个调度系统比较好 楼上老哥流弊,能写个教程让我等菜鸟观摩观摩不? 流弊个锤子,我就是个憨憨,也就说说了,动手动不了,属实菜鸡 感觉有现成的就不想自己写了,太懒了。。。
有没有比自己写调度更简单方便的啊 使用APScheduler可以设置定时任务 你直接用linux的定时任务 跑不就完事了
页:
[1]
2