使用代理

1. 单文件spider局部使用代理

entry = 'http://xxxxx:xxxxx@http-pro.abuyun.com:xxx'.format("帐号", "密码","端口号")
# entry = 'http://{}'.format("api获取的ip代理")
# 传参meta迭代下一个方法
for url in self.starturl:
yield scrapy.Request(url,meta={"proxy":entry})

中间件添加代理

首先在中间件middlewares.py中,在最后加入如下代码:

class ProxyMiddleware:
def process_request(self,request,spider):
entry = 'http://xxxxx:xxxxx@http-pro.abuyun.com:xxx'.format("帐号", "密码","端口号")
request.meta["proxy"] = entry

**可通过 **

if spider.name== "" 的方式控制单文件使用代理

然后在setting.py中设置优先级:

DOWNLOADER_MIDDLEWARES = {
'你的项目名.middlewares.ProxyMiddleware': 100, # 100 代表优先级
}

设置超时时间

设置单个请求设置超时时间

meta = {'download_timeout':30}

设置整个文件超时时间

custom_settings = {
'DOWNLOAD_TIMEOUT': 60,
}

全局设置超时时间

DOWNLOAD_TIMEOUT = 60

Scrapy设置下载延时和自动限速(配合代理使用)

单个请求

custom_settings = {
'DOWNLOAD_DELAY': 0.3,
'AUTOTHROTTLE_ENABLED': True
}

全局设置


#延时2秒,不能动态改变,时间间隔固定,容易被发现,导致ip被封
DOWNLOAD_DELAY=2 # RANDOMIZE_DOWNLOAD_DELAY 在settings.py文件中设置
# 启用后,当从相同的网站获取数据时,Scrapy将会等待一个随机的值,延迟时间为0.5到1.5之间的一个随机值乘以DOWNLOAD_DELAY
RANDOMIZE_DOWNLOAD_DELAY=True # 自动限速扩展 在settings.py中配置 AUTOTHROTTLE_ENABLED #默认为False,设置为True可以启用该扩展
AUTOTHROTTLE_START_DELAY #初始下载延迟,单位为秒,默认为5.0
AUTOTHROTTLE_MAX_DELAY #设置在高延迟情况下的下载延迟,单位为秒,默认为60
AUTOTHROTTLE_DEBUG #用于启动Debug模式,默认为False
CONCURRENT_REQUESTS_PER_DOMAIN #对单个网站进行并发请求的最大值,默认为8
CONCURENT_REQUESTS_PER_IP #对单个IP进行并发请求的最大值,如果非0,则忽略CONCURRENT_REQUESTS_PER_DOMAIN设定,使用该IP限制

scrapy 如何使用代理 以及设置超时时间的更多相关文章

  1. C# UdpClient 设置超时时间

    /********************************************************************** * C# UdpClient 设置超时时间 * 说明: ...

  2. mongodb3.6 (五)net 客户端访问mongodb设置超时时间踩过的“坑”

    前言 在上一篇文章中,我们有提到net访问mongodb连接超时默认为30秒,这个时间在实际项目中肯定是太长的.而MongoClientSettings 也确是提供了超时属性,如下图: 可实际使用中, ...

  3. Go基础系列:为select设置超时时间

    Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 After() 谁也无法保证某 ...

  4. GuzzleHttp 请求设置超时时间

    之前调用一个三方的 WEB API,大量的请求超时,导致 PHP 进程被占用完.整个网站一直报 504. 其中一个优化措施就是对三方 API 调用设置超时时间. use GuzzleHttp\Clie ...

  5. Mybatis设置超时时间

    Mybatis设置超时时间 mybatis如果不指定,默认超时时间是不做限制的,默认值为0.mybatis sql配置超时时间有两种方法: 1.全局配置 在mybatis配置文件的settings节点 ...

  6. winform设置超时时间

    ); //设置超时时间 var completedTask = await Task.WhenAny(new Task(async () => { );//执行的方法示例这里用延迟代替 }), ...

  7. HttpClient 如何设置超时时间

    今天分享一个巨坑,就是 HttpClient.这玩意有多坑呢?就是每个版本都变,近日笔者深受其害. 先看一下代码,我要发送请求调用一个c++接口. public static String doPos ...

  8. 爬虫学习笔记之为什么要设置超时时间,怎么设置(使用selenium)

    一个程序没有设置超时时间,就可以说是一段有缺陷的代码. 读取超时指的就是客户端等待服务器发送请求的时间.(特定地,它指的是客户端要等待服务器发送字节之间的时间.在 99.9% 的情况下这指的是服务器发 ...

  9. FFmpeg命令读取RTMP流如何设置超时时间

    子标题:FFmpeg命令录制RTMP流为FLV文件时如何设置超时时间 | FFmpeg命令如何解决录制产生阻塞的问题0x001: 前言 今天在测试程序时遇到两个问题.Q1:ffmpeg录制RTMP流并 ...

随机推荐

  1. Excel 统计函数(五):MINIFS 和 MAXIFS

    MINIFS [语法]MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) [参数] min ...

  2. PerfView专题 (第九篇):洞察 C# 中的 LOH 内存碎片化

    一:背景 在 内存泄漏 的系列问题中,有一类问题是 内存碎片化 导致的,而且这种更容易发生在 LOH 上,因为它默认不开启 对象压缩,一般遇到这种情况,优先让朋友执行下面的代码应急. GCSettin ...

  3. 【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法

    问题描述 在App Service for Windows的环境中,当前只提供了PHP 7.4 版本的选择情况下,如何实现自定义PHP Runtime的版本呢? 如 PHP Version 8.1.9 ...

  4. HMS Core Discovery第17期回顾|音随我动,秒变音色造型师

    HMS Core Discovery第17期直播<音随我动,秒变音色造型师>,已于8月25日圆满结束,本期直播我们邀请了HMS Core音频编辑服务的产品经理.技术专家以及创新娱乐类应用& ...

  5. PHP代码审计——文件操作漏洞

    梦想CMS(lmxcms)任意文件删除 1. 漏洞详情--CNVD-2020-59469   2. 漏洞描述称后台Ba***.cl***.php文件存在任意文件删除,查看cms源码,只有BackdbA ...

  6. Mac_mysql_密码重置

    1 通过Mac 的设置 stop mysql 2 跳过权限认证 // 进入数据库指令文件 cd /usr/local/mysql/bin // 跳过权限认证 sudo ./mysqld_safe -- ...

  7. 对表白墙wxml文件解释

    一.index.wxml 1.代码 1 <view class="Beijingse" style="height: 100%;"> 2 <v ...

  8. 传输层协议(tcp ip和udp 三次握手 四次握手)

    1 TCP/IP协议介绍 TCP/IP协议:Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议. TCP/IP是一个Proto ...

  9. Pod 使用进阶

    静态 Pod 在 Kubernetes 集群中除了我们经常使用到的普通的 Pod 外,还有一种特殊的 Pod,叫做Static Pod,也就是我们说的静态 Pod,静态 Pod 有什么特殊的地方呢? ...

  10. kvm命令管理虚拟机

    virsh 既有命令行模式,也有交互模式,在命令行直接输入 virsh 就进入交互模式, virsh 后面跟命令参数,则是命令行模式: KVM 工具集合 libvirt:操作和管理KVM虚机的虚拟化 ...