Scrapy:如何编写HttpProxyMiddleware?

Scrapy:如何编写HttpProxyMiddleware?,scrapy,Scrapy,Scrapy的文档中关于HttpProxyMiddleware的描述如下: 该中间件通过为请求对象设置代理元值,设置用于请求的HTTP代理 与Python标准库模块urllib和urllib2一样,它遵循以下环境变量: http_proxy https_proxy no_proxy 您还可以将每个请求的元密钥代理设置为http://some_proxy_server:port或http://username:password@一些代理服务器:端口。请记住,此值将优先于http\u proxy/

Scrapy
的文档中关于
HttpProxyMiddleware
的描述如下:

该中间件通过为
请求
对象设置
代理
元值,设置用于请求的HTTP
代理

与Python标准库模块
urllib
urllib2
一样,它遵循以下环境变量:

http_proxy
https_proxy
no_proxy
您还可以将每个请求的元密钥代理设置为
http://some_proxy_server:port
http://username:password@一些代理服务器:端口
。请记住,此值将优先于
http\u proxy/https\u proxy
环境变量,并且它还将忽略
no\u proxy
环境变量

文件:

但文档中没有示例。
我不知道如何编写
HttpProxyMiddleware


有什么建议吗?

你不需要写建议HttpProxyMiddleware已存在于Scrapy中

正如docs所述,有两种方式可以让Scrapy知道您需要通过代理处理您的请求:

  • 设置环境变量 (例如,从命令行)

  • 您还可以将每个请求的元键“proxy”设置为类似或的值

    请记住,此值将优先于http\u proxy/https\u proxy环境变量,并且它还将忽略no\u proxy环境变量

    e、 g


  • 你不需要写一个HttpProxyMiddleware已存在于Scrapy中

    正如docs所述,有两种方式可以让Scrapy知道您需要通过代理处理您的请求:

  • 设置环境变量 (例如,从命令行)

  • 您还可以将每个请求的元键“proxy”设置为类似或的值

    请记住,此值将优先于http\u proxy/https\u proxy环境变量,并且它还将忽略no\u proxy环境变量

    e、 g


  • settings.py中执行此操作

    DOWNLOADER_MIDDLEWARES = {
         'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100
    }
    
    然后在
    产生每个请求时执行此操作

    yield Request(meta={'proxy': "http://%s"%(random.choice(["IP:PORT", "IP:PORT"]))})
    

    就这样

    settings.py中执行此操作

    DOWNLOADER_MIDDLEWARES = {
         'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100
    }
    
    然后在
    产生每个请求时执行此操作

    yield Request(meta={'proxy': "http://%s"%(random.choice(["IP:PORT", "IP:PORT"]))})
    

    就这样

    假设我已经有5个代理IP地址。我想设置一个IP地址池,我应该怎么做?假设我已经有5个代理IP地址。我想设置一个IP地址池,我应该怎么做?假设我已经有5个代理IP地址。我想设置一个IP地址池,我该怎么办?@zwl1619在您的Spider文件中创建IP列表,并在每个请求中使用随机代理IP…您能给我看一下代码吗?我不知道如何使它随机。我们在哪里产生这个请求,在哪个文件中?假设我已经有5个代理IP地址。我想设置一个IP地址池,我该怎么办?@zwl1619在您的Spider文件中创建IP列表,并在每个请求中使用随机代理IP…您能给我看一下代码吗?我不知道如何使它随机。我们在哪里产生这个请求,在哪个文件中?