请求多个网站的Python类

我有一个请求函数request_url,它从不同的网站请求数据。我将此功能应用于多个不同的功能some_function_a。


def some_function_a():

     url = www.facebook.com

     facebook = request_url(url)

     facebook.apply(...)  # start to do some data wrangling

     ...


def some_function_b():

     url = www.instagram.com

     instagram = request_url(url)

     instagram.apply(...)

     ...


def some_function_c():

     url = www.linkedin.com

     linkedin = request_url(url)

     linkedin.apply(...)

     ...


我想把所有东西都打包成一个班级。不幸的是,我对 python 中的类不是很有经验。一个类看起来如何,以便我可以执行以下操作:


def some_function_a():

    facebook = request_class.facebook

    facebook.apply(...)

    ...


def some_function_b():

    instagram = request_class.instagram

    instagram.apply(...)



def some_function_c():

    linkedin = request_class.linkedin

    linkedin.apply(...)

    ...


最优雅的方法是什么?类 request_class 是什么样子的?


MMMHUHU
浏览 265回答 2
2回答

慕婉清6462132

你可以这样做(你还需要正确使用请求和 url 作为字符串):class Request_class(object):    '''    Class with all the requests    '''    def __init__(self, linkedin_url):        '''        Constructor        '''        #You can pass variables to create some class properties        #for example, if linkedin url is always the same        self.linkedin = linkedin_url    def facebook(self, url):        facebook = request_url(url)        facebook.apply(...)        ...    def instagram(self, url):        instagram = request_url(url)        instagram.apply(...)        ...    def linkedin(self):        #you don't need to pass the linkedin url; it's already a class property        linkedin = request_url(self.url)        linkedin.apply(...)        ...#Then you can create an instance of the class:my_requests = Request_class('www.linkedin.com')#And you can call its methods:my_requests.facebook('www.facebook.com')my_requests.instagram('www.instagram.com')#For this last the class already knows the urlmy_requests.linkedin()

撒科打诨

首先创建 RequestClass 并给它一个 url 的属性。然后您可以为每个站点使用不同的 url 创建对象。some_function() 可以是类方法:class RequestClass:    def __init__(self, url):    self.url = urldef make_request(self):    request(self.url)def some_function(self):    apply(...)要创建一个对象:fb = RequestClass("www.facebook.com")ig = RequestClass("www.instagram.com")li = RequestClass("www.linkedin.com")fb.make_request()ig.make_request()li.make_request()如果你想访问请求中的数据,你可以在你的请求方法中将它保存为 self.data 假设你向站点发出请求的方式返回数据:class RequestClass:    def __init__(self, url):    self.url = url    self.data    def make_request(self):        self.data = request(self.url)要访问数据,例如,来自 Facebook 的请求:fb.data #returns the data from the request to facebookprocess_data(fb.data) #easily use that data in a diff function如果您在类中创建其他方法或属性,则可以轻松地为每个站点访问它们,例如,如果您想要打印请求中的数据:fb.print_request_data()ig.print_request_data()li.print_request_data()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python