python 爬虫延时方法
时间: 2024-11-21 08:30:42 浏览: 15
在Python爬虫中,添加延时是为了避免对目标服务器造成过大的压力,防止被识别为机器人并封禁IP。常用的延时方法有几种:
1. 使用`time.sleep()`函数:这是最直接的方式,例如 `time.sleep(n)`会让程序暂停n秒后再继续执行,其中n是你设置的延迟时间(单位通常是秒)。
```python
import time
# 每次请求之间等待1秒
for i in range(num_requests):
# 发送请求...
time.sleep(1)
```
2. 使用第三方库如`fake_useragent`和`random`组合:可以随机生成User-Agent头和模拟人类行为的间隔,减少规律性。
```python
from fake_useragent import UserAgent
import random
ua = UserAgent()
headers = {'User-Agent': ua.random}
while True:
# 发送请求...
response = requests.get(url, headers=headers)
# 随机等待时间
delay = random.uniform(0, 5) # 0到5秒之间的随机数
time.sleep(delay)
```
3. 使用`Scrapy`框架:如果你正在使用Scrapy,它提供了内置的延时机制,通过`DOWNLOAD_DELAY`设置全局下载延迟,或者在中间件中使用`scrapy.downloadermiddlewares.useragent.RandomUserAgentMiddleware`来随机更换User-Agent。
```python
# settings.py
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'myproject.middlewares.RandomUserAgentMiddleware': 400,
}
# middlewares.py
class RandomUserAgentMiddleware:
def process_request(self, request, spider):
user_agent = random.choice(USER_AGENTS_LIST)
request.headers.setdefault('User-Agent', user_agent)
```
阅读全文