首页 > 解决方案 > 我需要从函数中导入一个变量。我该怎么做?

问题描述

我想将一个变量从一个函数导入另一个函数,有没有一种方法可以实现这一点。我正在尝试将 number_of_pages 变量从函数 2 导入到函数 1,以便我可以通过下面的 url 循环页数。下面是两个函数:

功能一

def forge_url(self, year):
    print('Year:', year)
    for page in range(1, number_of_pages, 1):
        print('Page:', page)
        url = 'https://www.example.com/annonce/page?context=add_hit_meta%3Dnumeroparution%2540numeroparution%26add_hit_meta%3Ddatepublication%2540datepublication%26add_hit_meta%3Dnojo%2540nojo%26add_hit_meta%3Dnom%2540nom%26add_hit_meta%3Dprenom%2540prenom%26add_hit_meta%3Dtribunal%2540tribunal%26add_hit_meta%3Drm%2540rm%26add_hit_meta%3Drcs%2540rcs%26add_hit_meta%3Dnumeroannonce%2540numeroannonce%26add_hit_meta%3Dnumerodepartement%2540numerodepartement%26add_hit_meta%3Ddenomination%2540denomination%26add_hit_meta%3Dxmlbody%2540xmlbody%26s%3Ddatepublication%26b%3D0%26q%3D%2528proc%25C3%25A9dure%2Bcollective%2529%2B%2528%2528datepublication%253E%253D{}%2529%2B%2BAND%2B%2528datepublication%253C%253D{}%2529%2B%2529%2Bnumerodepartement%253A%252875%2529%26sa%3D1%26n%3DslBodaccDiffusion%26target%3DstBodaccDiffusion%26hf%3D10%26add_category_group%3Dpublication_cat%2540Top%252Fpublication_cat%253A1%26add_category_group%3Dcategorieannonce_cat%2540Top%252Fcategorieannonce_cat%253A1%26add_category_group%3Dtypeannonce_cat%2540Top%252Ftypeannonce_cat%253A1%26lang%3Dfr&page={}'.format(year, year+1, page)
        yield url

功能二

def get_pages(self, doc, url):
    listings_extract = doc.xpath("//*[@id='resultats']/h3/text()")
    listings = ''.join(listings_extract)
    listings = int(re.search(r'\d+', listings).group())
    number_of_pages = round(listings/10)
    return number_of_pages

标签: python-3.xweb-scrapingdata-science

解决方案


在您的情况下,您不需要使用函数 2 中的变量 - 该变量可以从函数返回

number_of_pages = self.get_pages(doc, url)

因此,您可以编写如下内容:

def forge_url(self, year):
    number_of_pages = self.get_pages(doc, url)
    print('Year:', year)
    for page in range(number_of_pages):
        print('Page:', page)
        url = 'this very big url of yours'.format(year, year+1, page)
        yield url

请注意,从您的代码中不清楚参数应该来自哪里,所以我只是添加它们,就好像它们已定义一样docurl


推荐阅读