Scrapy设置中间件和设置中设置ip代理['http://219.144.150.42:2324', 'http://219.144.150.224:2324']
时间: 2024-11-07 16:29:54 浏览: 15
爬取彼岸图网的壁纸 https://pic.netbian.com/
在Scrapy中,设置中间件以轮换使用提供的IP代理列表可以分为几个步骤:
1. 创建IP代理中间件:
首先,你需要创建一个名为`CustomProxyMiddleware`的中间件类,继承自`scrapy.downloadermiddlewares.http_proxy.HttpProxyMiddleware`。在这个类中,你需要维护一个代理IP列表,并在每次请求时从中取出一个代理IP作为请求头的`HTTP_PROXY`或`HTTPS_PROXY`值。
```python
import random
from scrapy.downloadermiddlewares.http_proxy import HttpProxyMiddleware
class CustomProxyMiddleware(HttpProxyMiddleware):
def __init__(self, proxy_list, *args, **kwargs):
self.proxy_list = proxy_list
super().__init__(*args, **kwargs)
def get_proxy(self):
return random.choice(self.proxy_list)
def process_request(self, request, spider):
proxy = self.get_proxy()
if proxy:
request.meta['proxy'] = proxy
```
2. 配置中间件:
在项目的`settings.py`文件中,添加这个自定义中间件到`DOWNLOADER_MIDDLEWARES`字典,确保其在`HttpProxyMiddleware`前面以保证代理设置优先级:
```python
DOWNLOADER_MIDDLEWARES = {
'your_project.middlewares.CustomProxyMiddleware': 700,
'scrapy.downloadermiddlewares.http_proxy.HttpProxyMiddleware': None, # 关闭默认的HTTP/HTTPS代理中间件
}
```
3. 设置代理列表:
传递给中间件的`proxy_list`应该是你提供的IP代理列表,例如:
```python
custom_proxy_middleware = CustomProxyMiddleware(['http://219.144.150.42:2324', 'http://219.144.150.224:2324'])
```
现在,每个请求都会从这个列表中随机选取一个代理IP进行转发。
阅读全文