python爬虫怎么设置休眠
时间: 2024-09-14 19:01:32 浏览: 57
在Python中,爬虫设置休眠主要是为了避免对目标服务器造成过大压力,同时也是遵守网站的robots.txt协议。你可以使用Python标准库中的`time`模块的`sleep`函数来实现休眠功能,也可以使用第三方库如`requests`结合`urllib3`中的`PoolManager`来更精细地控制连接的休眠时间。
使用`time.sleep`方法的示例代码如下:
```python
import time
def crawl(url):
# 模拟爬取过程
print(f"正在爬取{url}")
time.sleep(2) # 设置爬虫休眠2秒
print("爬取完成")
# 调用函数
crawl('http://example.com')
```
而使用`requests`和`urllib3`的示例代码如下:
```python
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
def crawl(url):
# 设置请求头
headers = {
'User-Agent': 'Mozilla/5.0 (compatible; MyCrawler/1.0; +http://example.com/bot)'
}
# 设置重试策略
retries = Retry(total=5, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
adapter = HTTPAdapter(max_retries=retries)
with requests.Session() as session:
session.mount('http://', adapter)
session.mount('https://', adapter)
while True:
try:
response = session.get(url, headers=headers)
# 处理网页内容...
print(f"正在爬取{url}")
time.sleep(2) # 设置爬虫休眠2秒
print("爬取完成")
break
except requests.exceptions.RequestException as e:
print(f"请求错误:{e}")
time.sleep(2) # 如果请求失败,稍作休眠后重试
# 调用函数
crawl('http://example.com')
```
在这段代码中,我们使用了`urllib3.util.retry.Retry`类来实现当请求失败时的自动重试,并在每次请求之间加入休眠时间。
阅读全文