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

发布于 2022-09-07 12:05:41 字数 1208 浏览 23 评论 0

如下面的代码,我创建了一个中间件,在__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)
        

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文