Source code for prijsoog.supermarkets.jumbo

from prijsoog._base import PriceWatcher
from datetime import datetime
import time


[docs]class JumboWatcher(PriceWatcher): """Jumbo price watcher."""
[docs] def search(self, query: str): """Search different supermarkets for product query :param query: product name, e.g. 'appel' :type query: str :return: results of your search :rtype: dict """ # Make sure there is at least 5 sec interval between requests. current_interval = datetime.now() - self.last_request if current_interval.seconds < self.min_delay: time.sleep(self.min_delay - current_interval.seconds) url = f"https://www.jumbo.com/zoeken?searchTerms={query}" soup = super().make_request(url) # Css selector name_css = ".title-link" price_css = ".fractional , .whole" # Make selection selection = { "name": [name.contents[0] for name in soup.select(name_css)], "price": self._price_filter(soup.select(price_css)), } return dict(zip(*selection.values()))
def _price_filter(self, prices): """Combine Jumbo price elements '2', ',', '99' into '2.99'""" return [price.text for price in prices if len(price.text) > 0]