scrapy中添加ip池的方法

scrapy中添加ip池的方法

我使用的是scrapy2.2
setting 中写下ip池

IPPOOL = [
    {'ipaddr':'221.230.72.165:80'},
{'ipaddr':'175.154.50.162:8118'},
{'ipaddr':'111.155.116.212:8123'},

]

在在中间件midllewares添加代码

from mypython.settings import IPPOOL

from scrapy import signals
from scrapy.downloadermiddlewares.httpproxy import HttpProxyMiddleware

from itemadapter import is_item, ItemAdapter
import random

class Ip_proxy(HttpProxyMiddleware):
    def __init__(self, ip=''):
        self.ip = ip

    def process_request(self, request, spider):
        newip = random.choice(IPPOOL)
        print('ip为:'+ newip["ipaddr"])
        request.meta["proxy"] = "http://" + newip["ipaddr"]

random函数是随机获取ip池的ip
创建Ip_proxy类名字随意
在setting设置DOWNLOADER_MIDDLEWARES
类的名字没错就行

 DOWNLOADER_MIDDLEWARES = {

    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':None,
    'mypython.middlewares.Ip_proxy': 125,
    }

mypython是创建scrapy的项目名(scrapy startproject mypython),大家根据自己的项目名修改。
setting 中写下ip池 IPPOOL=[]
也可以改为直接在中间件中间添加。
运行的结果
。。。

scrapy中添加ip池的方法

。。。
如果要写自动更新IP池 就要抓取ip,再导入中间件中,代理ip一般免费的都用不了,或者响应慢等一系列问题,一般都是买代理ip,一般都提供API接口。

Original: https://blog.csdn.net/weixin_49331403/article/details/118097965
Author: 求界
Title: scrapy中添加ip池的方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/789151/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球