scrapy download delay, CONCURRENT_REQUESTS
2021/9/12 6:04:45
本文主要是介绍scrapy download delay, CONCURRENT_REQUESTS,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
设置delay有起码两个好处, 一个是对被爬对象表示礼貌, 另一个是爬的太快,很多服务器会封ip,或限制访问。
效果:每x秒左右来一个request
先建立一个项目来找CONCURRENT_REQUESTS与DOWNLOAD_DELAY的联系
大致给出粗略代码:
jianshuspider.py:
import scrapy
from JianshuSpider_author_1.items
import JianshuspiderAuthor1Item
from scrapy.selector
import Selector
class JianshuSpider(scrapy.Spider):
name ="jianshu"
def start_requests(self):
urls = ['http://www.jianshu.com/users/958f740aed52/followers']
for url
in urls:
yield scrapy.Request(
url = url,
callback=
self.parse_author)
def parse_author(
self,
response):
item = JianshuspiderAuthor1Item()
selector = Selector(response)
fans_href = selector.xpath("//div[@class='info']/a/@href").extract()
for fan_href
in fans_href:
fan_href ='http://www.jianshu.com/users/'+ fan_href.split('/')[-1] +'/followers'
# fan_href = 'http://www.google.com.hk/'+ fan_href.split('/')[-1] + '/followers'#需要timeout时调用
yield scrapy.Request(fan_href,
callback=self.parse_author)
item['author'] = selector.xpath("//div[@class='title']/a/text()").extract_first()
yield item
requestlimit.py(downlomiddleware):
class RequestLimitMiddleware(object):
count =0
def process_request(self,request,spider):
self.count +=1
print(self.count)
以上两个文件的代码为核心代码。
测试结果:
一:
settings.py
CONCURRENT_REQUESTS =8
DOWNLOAD_DELAY =0
并且jianshuspider.py中关闭递归简书链接,打开Google链接语句
效果:8个request同时来,同时timeout。8个request又来,又timeout。如此循环。
二:
settings.py
CONCURRENT_REQUESTS =1
DOWNLOAD_DELAY =5
并且jianshuspider.py中打开递归简书链接,关闭Google链接语句
效果:每5秒左右来一个request
三:
settings.py
CONCURRENT_REQUESTS =2
DOWNLOAD_DELAY =5
并且jianshuspider.py中打开递归简书链接,关闭Google链接语句
效果:一开始来2个request(A,B),但5秒后只处理了一个request(A),新来一个request(C),5秒后又处理一个request(B),排队一个request(D)。如此循环。
总结:
DOWNLOAD_DELAY 会影响 CONCURRENT_REQUESTS,不能使并发显现出来。
思考:
当有CONCURRENT_REQUESTS,没有DOWNLOAD_DELAY 时,服务器会在同一时间收到大量的请求。
当有CONCURRENT_REQUESTS,有DOWNLOAD_DELAY 时,服务器不会在同一时间收到大量的请求。
这篇关于scrapy download delay, CONCURRENT_REQUESTS的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用