如何通过类方法改变类属性的值?

王胖胖
  • 29

如下面的代码,我创建了一个中间件,在__init__方法里启动了一个浏览器,我想通过process_request方法,更新driver = webdriver.PhantomJS(service_args=service_args)的代理,如何更改代码。

class Phantomjs_Middlewares(object):
    def __init__(self,service_args=[]):
        redis_client_pool = redis.ConnectionPool(host='1.1.1.1', port=6378, password='123456')
        self.aaa_redis = redis.Redis(connection_pool=redis_client_pool)
        self.driver =  webdriver.PhantomJS(service_args=service_args)
        
    def get_proxy(self):
        return self.aaa_redis.randomkey()

    def __del__(self):
        self.driver.quit()
        
    def process_request(self,request,spider):
        service_args = [
            '--proxy=%s'%self.get_proxy(),
            '--proxy-type=http',
            '--load-images=no',
            '--disk-cache=yes',
            '--ignore-ssl-errors=true'
        ]
        #上面设置好代理后,如何在下面更新__init__创建好的浏览器的代理,或设置项
        self.driver(service_args=service_args)#这句有问题,不会写了
        driver.get(url=request.url)
        return HtmlResponse(url=driver.current_url, body=driver.page_source, encoding="utf-8", request=request)
        

图片描述

回复
阅读 1.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏