账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Can we set a proxy for the spider using the scrapy_splash?
    32
    0

    When I implemented a spider using Scrapy, I wanted to change the proxy of it so that the server wouldn't forbid my request according to the frequent requests from an ip. I also knew how to change the proxy with Scrapy, using middlewares or directly change the meta when I request.

    However, I used the package scrapy_splash to execute the Javascript for my spider, then I found it difficult to change the proxy because in my opinion, the scrapy_splash use a proxy server to render the JS of the website for us.

    In fact, when I only use Scrapy, the proxy goes well, but turns to be unuseful when I use scrapy_splash.

    So is there any way to set a proxy for the request of the scrapy_splash?

    HELP ME,PLZ,THANK YOU

    modified 4 hours later:

    I have set the related settings in the setting.py and written this in the middlewares.py. As I mentioned before, this only works for scrapy but not scrapy_splash:

    class RandomIpProxyMiddleware(object):
        def __init__(self, ip=''):
            self.ip = ip
            ip_get()
            with open('carhome\\ip.json', 'r') as f:
                self.IPPool = json.loads(f.read())
    
        def process_request(self, request, spider):
            thisip = random.choice(self.IPPool)
            request.meta['proxy'] = "http://{}".format(thisip['ipaddr'])
    

    And here is the code in the spider with scrapy_splash:

        yield scrapy_splash.SplashRequest(
                item, callback=self.parse, args={'wait': 0.5})
    

    Here is the code in the spider without this pluguin:

        yield scrapy.Request(item, callback=self.parse)
    2
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 猫极 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部