如何从给定的代理池设置IP代理?

2024-04-27 00:58:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个代理池链接http://10.10.5.17:5009/proxy_pool,它输出以下内容:

{
    "msg": "success",
    "list": [
        "111.72.193.250:34621",
        "114.99.28.7:25995",
        "121.234.245.76:35513",
        "220.186.155.66:49366",
        "117.90.252.72:45037"
    ],
    "data": "114.99.28.7:25995"
}

这些IP每隔几分钟就换一次。我想知道如何在Scrapy中设置这个。你知道吗

我看过一些教程,演示了如何在中添加每个IP设置.py然后把它叫来中间件.py,但我不能这样做,因为我需要从链接读取IP(而且它们变化很快)。你知道吗


Tags: 中间件pyiphttp代理data链接教程
2条回答

您必须编写自己的下载程序中间件来处理初始下载代理列表、时不时地获取新列表以及从当前列表中为每个请求分配随机代理。你知道吗

你应该从阅读documentation about downloader middlewares开始。然后,我建议您找到处理代理的现有中间件(例如scrapy-rotating-proxies),并从中学习。你知道吗

import json
import random


def start_requests(self):
    proxy_request = scrapy.Request(url='http://10.10.5.17:5009/proxy_pool', callback=self.prepare_request)
    yield proxy_request


def prepare_request(self, response):
    target_url = 'XXX'
    proxy_response = json.loads(response.body_as_unicode())
    proxy_list = [proxy for proxy in proxy_response['list']]
    request = scrapy.Request(url=target_url, meta={'proxy': random.choice(proxy_list)}, callback=self.scrape)


def scrape(self, response):
...

相关问题 更多 >