python-500个scrapy请求后添加延迟
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-500个scrapy请求后添加延迟,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1743字,纯文字阅读大概需要3分钟。
内容图文
我有一个开始2000网址的列表,并且正在使用:
DOWNLOAD_DELAY = 0.25
为了控制请求的速度,但我还想在n个请求之后添加更大的延迟.
例如,我希望每个请求延迟0.25秒,每500个请求延迟100秒.
编辑:
样例代码:
import os
from os.path import join
import scrapy
import time
date = time.strftime("%d/%m/%Y").replace('/','_')
list_of_pages = {'http://www.lapatilla.com/site/':'la_patilla',
'http://runrun.es/':'runrunes',
'http://www.noticierodigital.com/':'noticiero_digital',
'http://www.eluniversal.com/':'el_universal',
'http://www.el-nacional.com/':'el_nacional',
'http://globovision.com/':'globovision',
'http://www.talcualdigital.com/':'talcualdigital',
'http://www.maduradas.com/':'maduradas',
'http://laiguana.tv/':'laiguana',
'http://www.aporrea.org/':'aporrea'}
root_dir = os.getcwd()
output_dir = join(root_dir,'data/',date)
class TestSpider(scrapy.Spider):
name = "news_spider"
download_delay = 1
start_urls = list_of_pages.keys()
def parse(self, response):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
filename = list_of_pages[response.url]
print time.time()
with open(join(output_dir,filename), 'wb') as f:
f.write(response.body)
在这种情况下,列表较短,但想法是相同的.我想将延迟级别设置为每个请求一个,每个“ N”个请求一个.
我不抓取链接,只是保存主页.
解决方法:
您可以考虑使用AutoThrottle extension,它不能让您严格控制延迟,而是拥有自己的算法,可以根据响应时间和并发请求数即时调整蜘蛛,以降低蜘蛛速度.
如果您需要对抓取过程中某些阶段的延迟进行更多控制,则可能需要custom middleware或自定义扩展名(类似于AutoThrottle-source).
您也可以随时更改.download_delay attribute of your spider.顺便说一句,这正是AutoThrottle扩展程序在后台进行的功能-updates the .download_delay value on the fly.
一些相关主题:
> Per request delay
> Request delay configurable for each Request
内容总结
以上是互联网集市为您收集整理的python-500个scrapy请求后添加延迟全部内容,希望文章能够帮你解决python-500个scrapy请求后添加延迟所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。