Я предполагаю, что это скрипт с группой методов, которые вы вызываете в определенном порядке.Если это так, то это хороший вариант использования для dict
.Я написал бы функцию, которая запоминает обращения к URL-адресам.
Затем вы можете использовать эту функцию для других ваших функций:
requests_cache = {}
def get_url (url, format_parser):
if url not in requests_cache:
r = requests.get(url)
html = requests.get(r.url)
requests_cache[url] = BeautifulSoup(html.content, format_parser)
return requests_cache[url]
def get_Price (makat):
url = 'https://www.zap.co.il/search.aspx?keyword='+makat
bsObj = get_url(url, 'html.parser')
# your code to find the price
return zapPrice
def get_zapStoreName (makat):
url = 'https://www.zap.co.il/search.aspx?keyword='+makat
bsObj = get_url(url, 'html.parser')
# your code to find the store name
return storeName
def get_h1Tag (u):
bsObj = get_url(u, 'xml')
h1 = bsObj.find('h1',attrs={'itemprop':'name'}).get_text()
return h1
Если вы хотите избежать глобальной переменной, вы также можете установитьrequests_cache
как атрибут get_url
или как аргумент по умолчанию в определении.Последнее также позволит вам обойти кеш, передав пустой dict
.
Опять же, здесь предполагается, что вы периодически запускаете этот код как скрипт.В этом случае requests_cache
будет очищаться при каждом запуске программы.
Однако, если это часть более крупной программы, вы захотите «истечь» из кеша на регулярной основе, иначевы бы получали одинаковые результаты каждый раз.