Scrapy爬虫设置代理ip

当使用Scrapy爬虫遇到IP被封问题时,可以通过设置代理IP解决。本文介绍如何在Scrapy中配置开放代理和独享代理,详细步骤包括在middlewares.py中编写代码,并在settings.py中启用相应类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在应用爬虫的时候我们经常会遇到ip被封的情况,这样我们想要的数据就不能及时下载下来,那么怎么办呢?当然是使用代理ip了,下面来看看scrapy中怎么使用代理ip。
一、开放代理

import random
class IpProxyDownloadMiddleware(object):
    '''
    定义代理ip的类,这是开放代理的应用
    '''
    PROXIES = [
        '182.111.64.8:53364'
    ]

    def process_request(self, request, spider):
        proxy = random.choice(self.PROXIES)
        request.meta['proxy'] = proxy

二、使用独享代理

import base64

class IpProxyDownloadMiddleware(object):
    '''
    独享代理ip的应用方法,需要解码
    '''
    def process_request(self, request, spider):
        proxy = 'ip:端口'
        user_password = '用户名:密码'
        request.meta['proxy'] = proxy
        b64_user_password = base64.b64encode(user_password.encode('utf-8'))
        request.headers['Proxy-Authorization'] = 'Basic' + b64_user_password.decode('utf-8')

以上所有的代码都在middlewares.py中应用,然后在settings.py里面调用相应的类就可以了。

三、scrapy代码:

import scrapy
import json

class IpSpiderSpider(scrapy.Spider):
    name = 'ip_spider'
    allowed_domains = ['http_bin.org']
    start_urls = ['http://http_bin.org/ip']

    def parse(self, response):
        origin = json.loads(response.text)['origin']
        print('=='*20)
        print(origin)
        print('=='*20)
        yield scrapy.Request(self.start_urls[0],dont_filter=True)

然后启动scrapy就可以了,打印出的结果就是已经更改的ip

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值