diff --git a/il_supermarket_scarper/__init__.py b/il_supermarket_scarper/__init__.py
index 52d18f8..2cbc780 100644
--- a/il_supermarket_scarper/__init__.py
+++ b/il_supermarket_scarper/__init__.py
@@ -1,3 +1,3 @@
from .main import ScarpingTask
from .scrappers_factory import ScraperFactory
-from .utils import FileTypesFilters
+from .utils import FileTypesFilters, DumpFolderNames
diff --git a/il_supermarket_scarper/engines/cerberus.py b/il_supermarket_scarper/engines/cerberus.py
index 03c5aa1..09dcf1e 100644
--- a/il_supermarket_scarper/engines/cerberus.py
+++ b/il_supermarket_scarper/engines/cerberus.py
@@ -17,6 +17,7 @@ class Cerberus(Engine):
"""scraper for all Cerberus base site. (seems like can't support historical data)"""
target_file_extensions = ["xml", "gz"]
+ utilize_date_param = False
def __init__(
self,
diff --git a/il_supermarket_scarper/engines/engine.py b/il_supermarket_scarper/engines/engine.py
index 31a560f..dc877b9 100644
--- a/il_supermarket_scarper/engines/engine.py
+++ b/il_supermarket_scarper/engines/engine.py
@@ -21,6 +21,8 @@
class Engine(ScraperStatus, ABC):
"""base engine for scraping"""
+ utilize_date_param = True
+
def __init__(self, chain, chain_id, folder_name=None, max_threads=10):
assert DumpFolderNames.is_valid_folder_name(
chain
diff --git a/il_supermarket_scarper/engines/matrix.py b/il_supermarket_scarper/engines/matrix.py
index 794de6c..98f96fa 100644
--- a/il_supermarket_scarper/engines/matrix.py
+++ b/il_supermarket_scarper/engines/matrix.py
@@ -1,5 +1,5 @@
from bs4 import BeautifulSoup
-from il_supermarket_scarper.utils import Logger, _now, FileTypesFilters
+from il_supermarket_scarper.utils import Logger
from .apsx import Aspx
@@ -7,6 +7,8 @@ class Matrix(Aspx):
"""scraper for all matrix base site.
(support adveanced search: follow the instrucation the page)"""
+ utilize_date_param = False
+
def __init__(
self,
chain,
@@ -19,40 +21,40 @@ def __init__(
super().__init__(chain, chain_id, url, aspx_page, folder_name=folder_name)
self.chain_hebrew_name = chain_hebrew_name
- def get_file_types_id(self, files_types=None):
- """get the file type id"""
- if files_types is None:
- return "all"
-
- types = []
- for ftype in files_types:
- if ftype == FileTypesFilters.STORE_FILE.name:
- types.append("storefull")
- if ftype == FileTypesFilters.PRICE_FILE.name:
- types.append("price")
- if ftype == FileTypesFilters.PROMO_FILE.name:
- types.append("promo")
- if ftype == FileTypesFilters.PRICE_FULL_FILE.name:
- types.append("pricefull")
- if ftype == FileTypesFilters.PROMO_FULL_FILE.name:
- types.append("promofull")
- return types
-
- def get_when(self, when_date):
- """get the when date"""
- if when_date is None:
- when_date = _now()
- return when_date.strftime("%d/%m/%Y")
-
- def get_chain_n_stores__id(self, store_id=None, c_id=None):
- """get the store id"""
- if store_id is None:
- chain_id = str(c_id) # + "001"
- store_id = "-1"
- else:
- chain_id = str(c_id)
- store_id = str(c_id) + "001" + str(store_id).zfill(3)
- return chain_id, store_id
+ # def get_file_types_id(self, files_types=None):
+ # """get the file type id"""
+ # if files_types is None:
+ # return "all"
+
+ # types = []
+ # for ftype in files_types:
+ # if ftype == FileTypesFilters.STORE_FILE.name:
+ # types.append("storefull")
+ # if ftype == FileTypesFilters.PRICE_FILE.name:
+ # types.append("price")
+ # if ftype == FileTypesFilters.PROMO_FILE.name:
+ # types.append("promo")
+ # if ftype == FileTypesFilters.PRICE_FULL_FILE.name:
+ # types.append("pricefull")
+ # if ftype == FileTypesFilters.PROMO_FULL_FILE.name:
+ # types.append("promofull")
+ # return types
+
+ # def get_when(self, when_date):
+ # """get the when date"""
+ # if when_date is None:
+ # when_date = _now()
+ # return when_date.strftime("%d/%m/%Y")
+
+ # def get_chain_n_stores__id(self, store_id=None, c_id=None):
+ # """get the store id"""
+ # if store_id is None:
+ # chain_id = str(c_id) # + "001"
+ # store_id = "-1"
+ # else:
+ # chain_id = str(c_id)
+ # store_id = str(c_id) + "001" + str(store_id).zfill(3)
+ # return chain_id, store_id
def _build_query_url(self, query_params, base_urls):
res = []
diff --git a/il_supermarket_scarper/engines/multipage_web.py b/il_supermarket_scarper/engines/multipage_web.py
index 7fb2e81..85eb8b6 100644
--- a/il_supermarket_scarper/engines/multipage_web.py
+++ b/il_supermarket_scarper/engines/multipage_web.py
@@ -48,7 +48,9 @@ def get_request_url(
"""get all links to collect download links from"""
results = []
- for arguments in self.build_params(files_types=files_types, store_id=store_id):
+ for arguments in self.build_params(
+ files_types=files_types, store_id=store_id, when_date=when_date
+ ):
results.append(
{
"url": self.url + arguments,
diff --git a/il_supermarket_scarper/engines/publishprice.py b/il_supermarket_scarper/engines/publishprice.py
index f74d10e..10cace7 100644
--- a/il_supermarket_scarper/engines/publishprice.py
+++ b/il_supermarket_scarper/engines/publishprice.py
@@ -40,7 +40,6 @@ def get_request_url(
return [{"url": self.url + formated, "method": "GET"}]
def get_data_from_page(self, req_res):
- req_res = self.session_with_cookies_by_chain(self.url)
soup = BeautifulSoup(req_res.text, features="lxml")
# the developer hard-coded the files names in the html
diff --git a/il_supermarket_scarper/scraper_stability.py b/il_supermarket_scarper/scraper_stability.py
index 36101d4..8e17eea 100644
--- a/il_supermarket_scarper/scraper_stability.py
+++ b/il_supermarket_scarper/scraper_stability.py
@@ -1,5 +1,12 @@
+# pylint: disable=arguments-differ,arguments-renamed
from enum import Enum
-from il_supermarket_scarper.utils import _is_saturday_in_israel, _now, FileTypesFilters
+from il_supermarket_scarper.utils import (
+ _is_saturday_in_israel,
+ _now,
+ datetime_in_tlv,
+ FileTypesFilters,
+ hour_files_expected_to_be_accassible,
+)
class FullyStable:
@@ -7,7 +14,9 @@ class FullyStable:
@classmethod
def executes_between_midnight_and_morning_and_requested_today(
- cls, when_date=None, **_
+ cls,
+ when_date=None,
+ utilize_date_param=False,
):
"""it is stable if the execution is between midnight
and morning and the requested date is today fails"""
@@ -15,16 +24,21 @@ def executes_between_midnight_and_morning_and_requested_today(
return (
when_date
and execution_time.hour >= 0
- and execution_time.hour < 8
- and when_date.date() == execution_time.date()
+ and execution_time.hour < hour_files_expected_to_be_accassible()
+ and (not utilize_date_param or when_date.date() == execution_time.date())
)
@classmethod
- def failire_valid(cls, when_date=None, **_):
+ def executed_after_date(cls, when_date, date):
+ """check if executed after date"""
+ return when_date > date
+
+ @classmethod
+ def failire_valid(cls, when_date=None, utilize_date_param=True, **_):
"""return true if the parser is stble"""
return cls.executes_between_midnight_and_morning_and_requested_today(
- when_date=when_date
+ when_date=when_date, utilize_date_param=utilize_date_param
)
@@ -32,34 +46,10 @@ class SuperFlaky(FullyStable):
"""super flaky is stablity"""
@classmethod
- def failire_valid(cls, when_date=None, **_):
+ def failire_valid(cls, **_):
return True
-class Quik(FullyStable):
- """define stability for small chain"""
-
- @classmethod
- def executes_early_morning_ask_for_alot_of_files(cls, limit=None, **_):
- """small chain don't upload many files in the morning"""
- execution_time = _now()
- return limit and execution_time.hour < 12 and limit > 8
-
- @classmethod
- def executes_looking_for_store(cls, files_types=None, **_):
- """if the execution is in saturday"""
- return files_types and files_types == [FileTypesFilters.STORE_FILE.name]
-
- @classmethod
- def failire_valid(cls, when_date=None, limit=None, files_types=None, **_):
- """return true if the parser is stble"""
- return (
- super().failire_valid(when_date=when_date)
- or cls.executes_early_morning_ask_for_alot_of_files(limit=limit)
- or cls.executes_looking_for_store(files_types=files_types)
- )
-
-
class NetivHased(FullyStable):
"""Netiv Hased is stablity"""
@@ -69,30 +59,40 @@ def executed_in_saturday(cls, when_date=None, **_):
return when_date and _is_saturday_in_israel(when_date)
@classmethod
- def failire_valid(cls, when_date=None, **_):
+ def failire_valid(cls, when_date=None, utilize_date_param=False, **_):
"""return true if the parser is stble"""
- return super().failire_valid(when_date=when_date) or cls.executed_in_saturday(
- when_date=when_date
- )
+ return super().failire_valid(
+ when_date=when_date, utilize_date_param=utilize_date_param
+ ) or cls.executed_in_saturday(when_date=when_date)
-class SalachDabach(FullyStable):
+class CityMarketGivataim(FullyStable):
"""Netiv Hased is stablity"""
@classmethod
- def searching_for_store(cls, files_types=None, **_):
+ def searching_for_update_promo(cls, files_types=None, **_):
"""if the execution is in saturday"""
- return files_types and files_types == [FileTypesFilters.STORE_FILE.name]
+ return files_types and files_types == [FileTypesFilters.PROMO_FILE.name]
@classmethod
- def failire_valid(cls, when_date=None, files_types=None, **_):
+ def failire_valid(
+ cls, when_date=None, files_types=None, utilize_date_param=True, **_
+ ):
"""return true if the parser is stble"""
- return super().failire_valid(when_date=when_date) or cls.searching_for_store(
- files_types=files_types
+ return (
+ super().failire_valid(when_date=when_date)
+ or cls.searching_for_update_promo(files_types=files_types)
+ or when_date
+ and cls.executed_after_date(
+ when_date=when_date,
+ date=datetime_in_tlv(
+ year=2024, month=11, day=5, hour=0, minute=0, second=0
+ ),
+ )
)
-class CityMarketGivataim(FullyStable):
+class CityMarketKiratOno(FullyStable):
"""Netiv Hased is stablity"""
@classmethod
@@ -101,59 +101,75 @@ def searching_for_update_promo(cls, files_types=None, **_):
return files_types and files_types == [FileTypesFilters.PROMO_FILE.name]
@classmethod
- def failire_valid(cls, when_date=None, files_types=None, **_):
+ def failire_valid(
+ cls, when_date=None, files_types=None, utilize_date_param=True, **_
+ ):
"""return true if the parser is stble"""
return super().failire_valid(
when_date=when_date
) or cls.searching_for_update_promo(files_types=files_types)
-class CityMarketKiratOno(FullyStable):
+class CityMarketKiratGat(FullyStable):
"""Netiv Hased is stablity"""
@classmethod
- def searching_for_update_promo(cls, files_types=None, **_):
+ def searching_for_update_promo_full(cls, files_types=None, **_):
"""if the execution is in saturday"""
- return files_types and files_types == [FileTypesFilters.PROMO_FILE.name]
+ return files_types and files_types == [FileTypesFilters.PROMO_FULL_FILE.name]
@classmethod
- def failire_valid(cls, when_date=None, files_types=None, **_):
+ def failire_valid(
+ cls, when_date=None, files_types=None, utilize_date_param=True, **_
+ ):
"""return true if the parser is stble"""
return super().failire_valid(
when_date=when_date
- ) or cls.searching_for_update_promo(files_types=files_types)
+ ) or cls.searching_for_update_promo_full(files_types=files_types)
-class CityMarketKiratGat(FullyStable):
- """Netiv Hased is stablity"""
+class DoNotPublishStores(FullyStable):
+ """stablity for chains that doesn't pubish stores"""
@classmethod
- def searching_for_update_promo_full(cls, files_types=None, **_):
+ def searching_for_store_full(cls, files_types=None, **_):
"""if the execution is in saturday"""
- return files_types and files_types == [FileTypesFilters.PROMO_FULL_FILE.name]
+ return files_types and files_types == [FileTypesFilters.STORE_FILE.name]
@classmethod
- def failire_valid(cls, when_date=None, files_types=None, **_):
+ def failire_valid(
+ cls, when_date=None, files_types=None, utilize_date_param=True, **_
+ ):
"""return true if the parser is stble"""
return super().failire_valid(
- when_date=when_date
- ) or cls.searching_for_update_promo_full(files_types=files_types)
+ when_date=when_date,
+ files_types=files_types,
+ utilize_date_param=utilize_date_param,
+ ) or cls.searching_for_store_full(files_types=files_types)
class ScraperStability(Enum):
"""tracker for the stablity of the scraper"""
+ COFIX = DoNotPublishStores
NETIV_HASED = NetivHased
- QUIK = Quik
- SALACH_DABACH = SalachDabach
+ QUIK = DoNotPublishStores
+ SALACH_DABACH = DoNotPublishStores
CITY_MARKET_GIVATAYIM = CityMarketGivataim
CITY_MARKET_KIRYATONO = CityMarketKiratOno
CITY_MARKET_KIRYATGAT = CityMarketKiratGat
MESHMAT_YOSEF_1 = SuperFlaky
+ YOHANANOF = DoNotPublishStores
@classmethod
def is_validate_scraper_found_no_files(
- cls, scraper_enum, limit=None, files_types=None, store_id=None, when_date=None
+ cls,
+ scraper_enum,
+ limit=None,
+ files_types=None,
+ store_id=None,
+ when_date=None,
+ utilize_date_param=False,
):
"""return true if its ok the scarper reuturn no enrty"""
@@ -162,5 +178,9 @@ def is_validate_scraper_found_no_files(
stabler = ScraperStability[scraper_enum].value
return stabler.failire_valid(
- limit=limit, files_types=files_types, store_id=store_id, when_date=when_date
+ limit=limit,
+ files_types=files_types,
+ store_id=store_id,
+ when_date=when_date,
+ utilize_date_param=utilize_date_param,
)
diff --git a/il_supermarket_scarper/scrappers/bareket.py b/il_supermarket_scarper/scrappers/bareket.py
index 77c2123..8d12c2d 100644
--- a/il_supermarket_scarper/scrappers/bareket.py
+++ b/il_supermarket_scarper/scrappers/bareket.py
@@ -2,7 +2,6 @@
from il_supermarket_scarper.utils import DumpFolderNames
-# @FlakyScraper
class Bareket(Bina):
"""scarper for bareket"""
diff --git a/il_supermarket_scarper/scrappers/hazihinam.py b/il_supermarket_scarper/scrappers/hazihinam.py
index 6ae55cc..40420be 100644
--- a/il_supermarket_scarper/scrappers/hazihinam.py
+++ b/il_supermarket_scarper/scrappers/hazihinam.py
@@ -1,14 +1,81 @@
-from il_supermarket_scarper.engines import Cerberus
-from il_supermarket_scarper.utils import DumpFolderNames
+import urllib.parse
+import datetime
+from il_supermarket_scarper.engines import MultiPageWeb
+from il_supermarket_scarper.utils import DumpFolderNames, FileTypesFilters, _now
+# class HaziHinam(Cerberus):
+# """scrper fro hazi hinam"""
-class HaziHinam(Cerberus):
+# def __init__(self, folder_name=None):
+# super().__init__(
+# chain=DumpFolderNames.HAZI_HINAM,
+# chain_id="7290700100008",
+# folder_name=folder_name,
+# ftp_username="HaziHinam",
+# )
+
+
+class HaziHinam(MultiPageWeb):
"""scrper fro hazi hinam"""
def __init__(self, folder_name=None):
super().__init__(
chain=DumpFolderNames.HAZI_HINAM,
chain_id="7290700100008",
+ url="https://shop.hazi-hinam.co.il/Prices",
folder_name=folder_name,
- ftp_username="HaziHinam",
+ total_page_xpath="(//li[contains(concat(' ', normalize-space(@class), ' '),"
+ + "' pagination-item ')])[last()]/a/@href",
+ total_pages_pattern=r"\d+",
+ page_argument="&p",
)
+
+ def collect_files_details_from_page(self, html):
+ """collect the details deom one page"""
+ links = []
+ filenames = []
+ for link in html.xpath("//table/tbody/tr"):
+ links.append(link.xpath("td[5]/a/@href")[0])
+ filenames.append(link.xpath("td[2]")[0].text.strip() + ".xml.gz")
+ return links, filenames
+
+ def get_file_types_id(self, files_types=None):
+ """get the file type id"""
+ if files_types is None or files_types == FileTypesFilters.all_types():
+ return [{"t": "null", "f": "null"}]
+
+ types = []
+ for ftype in files_types:
+ if ftype == FileTypesFilters.STORE_FILE.name:
+ types.append({"t": "3", "f": "null"})
+ if ftype == FileTypesFilters.PRICE_FILE.name:
+ types.append({"t": "1", "f": "null"})
+ if ftype == FileTypesFilters.PROMO_FILE.name:
+ types.append({"t": "2", "f": "null"})
+ if ftype == FileTypesFilters.PRICE_FULL_FILE.name:
+ types.append({"t": "1", "f": "null"})
+ if ftype == FileTypesFilters.PROMO_FULL_FILE.name:
+ types.append({"t": "2", "f": "null"})
+ return types
+
+ def build_params(self, files_types=None, store_id=None, when_date=None):
+ """build the params for the request"""
+
+ all_params = []
+ for type_params in self.get_file_types_id(files_types):
+
+ # filtering store is not supported
+ # if store_id:
+ # params["s"] = "null"
+ if when_date and isinstance(when_date, datetime.datetime):
+ all_params.append({"d": when_date.strftime("%Y-%m-%d"), **type_params})
+ else:
+ all_params.append({"d": _now().strftime("%Y-%m-%d"), **type_params})
+ all_params.append(
+ {
+ "d": (_now() - datetime.timedelta(days=1)).strftime("%Y-%m-%d"),
+ **type_params,
+ }
+ )
+
+ return ["?" + urllib.parse.urlencode(params) for params in all_params]
diff --git a/il_supermarket_scarper/scrappers/nativ_hashed.py b/il_supermarket_scarper/scrappers/nativ_hashed.py
index 3a261d7..a5e9fb2 100644
--- a/il_supermarket_scarper/scrappers/nativ_hashed.py
+++ b/il_supermarket_scarper/scrappers/nativ_hashed.py
@@ -6,6 +6,8 @@
class NetivHased(WebBase):
"""scraper for nativ Hased"""
+ utilize_date_param = False
+
def __init__(self, folder_name=None):
super().__init__(
chain=DumpFolderNames.NETIV_HASED,
diff --git a/il_supermarket_scarper/scrappers/shufersal.py b/il_supermarket_scarper/scrappers/shufersal.py
index 37ab7e7..cd016b2 100644
--- a/il_supermarket_scarper/scrappers/shufersal.py
+++ b/il_supermarket_scarper/scrappers/shufersal.py
@@ -7,6 +7,8 @@
class Shufersal(MultiPageWeb):
"""scaper for shufersal"""
+ utilize_date_param = False
+
def __init__(self, folder_name=None):
super().__init__(
url="https://prices.shufersal.co.il/",
diff --git a/il_supermarket_scarper/scrappers/tests/test_all.py b/il_supermarket_scarper/scrappers/tests/test_all.py
index 26c4ac0..4582c08 100644
--- a/il_supermarket_scarper/scrappers/tests/test_all.py
+++ b/il_supermarket_scarper/scrappers/tests/test_all.py
@@ -44,7 +44,7 @@ class GoodPharmTestCase(make_test_case(ScraperFactory.GOOD_PHARM, 952)):
"""Test case for ScraperFactory.GOOD_PHARM."""
-class HaziHinamTestCase(make_test_case(ScraperFactory.HAZI_HINAM, 2)):
+class HaziHinamTestCase(make_test_case(ScraperFactory.HAZI_HINAM, 206)):
"""Test case for ScraperFactory.HAZI_HINAM."""
diff --git a/il_supermarket_scarper/scrappers/tests/test_cases.py b/il_supermarket_scarper/scrappers/tests/test_cases.py
index ae42ab6..881dc85 100644
--- a/il_supermarket_scarper/scrappers/tests/test_cases.py
+++ b/il_supermarket_scarper/scrappers/tests/test_cases.py
@@ -168,6 +168,7 @@ def __clean_scarpe_delete(
files_types=file_type,
store_id=store_id,
when_date=when_date,
+ utilize_date_param=scraper_enum.value.utilize_date_param,
):
self._make_sure_filter_work(
files_found,
diff --git a/il_supermarket_scarper/utils/__init__.py b/il_supermarket_scarper/utils/__init__.py
index e252e69..d70c0f8 100644
--- a/il_supermarket_scarper/utils/__init__.py
+++ b/il_supermarket_scarper/utils/__init__.py
@@ -10,6 +10,7 @@
_now,
datetime_in_tlv,
_testing_now,
+ hour_files_expected_to_be_accassible,
)
from .scraper_status import ScraperStatus
from .file_types import FileTypesFilters
diff --git a/il_supermarket_scarper/utils/status.py b/il_supermarket_scarper/utils/status.py
index fab5501..2d153f4 100644
--- a/il_supermarket_scarper/utils/status.py
+++ b/il_supermarket_scarper/utils/status.py
@@ -155,11 +155,16 @@ def clean_dump_folder(dump_folder):
os.remove(current_file)
+def hour_files_expected_to_be_accassible():
+ """the hour (AM) in which the files are expected to be published in IL time"""
+ return 12
+
+
def _now():
return datetime.datetime.now(pytz.timezone("Asia/Jerusalem"))
-def _testing_now(hour_consider_stable=12):
+def _testing_now(hour_consider_stable=hour_files_expected_to_be_accassible()):
current_time = _now()
if current_time.hour < hour_consider_stable:
diff --git a/il_supermarket_scarper/utils/tests/cpfta_prices_regulations b/il_supermarket_scarper/utils/tests/cpfta_prices_regulations
index 889eaf4..3db1473 100644
--- a/il_supermarket_scarper/utils/tests/cpfta_prices_regulations
+++ b/il_supermarket_scarper/utils/tests/cpfta_prices_regulations
@@ -5,21 +5,21 @@
-
-
-
שקיפות מחירים (השוואת מחירים) - קישורים לאתרי הקמעונאים הרשות להגנת הצרכן ולסחר הוגן
- שיחה למוקד המענה הממשלתי המרכזי
+
+ שקיפות מחירים (השוואת מחירים) - קישורים לאתרי הקמעונאים הרשות להגנת הצרכן ולסחר הוגן
+ שיחה למוקד המענה הממשלתי המרכזי
-
שקיפות מחירים (השוואת מחירים) - קישורים לאתרי הקמעונאים המאבק ביוקר המחיה הינו מלחמה רב מערכתית ואחת הדרכים האפקטיביות לצורך כך היא הגברת התחרות. חוק המזון (שקיפות מחירים) בא לענות על הצורך הזה. החוק והתקנות מכוחו, מחייבים קמעונאי גדול לפרסם באתר אינטרנט את רשימת כל חנויותיו, את כל מוצרי המזון ומחיריהם הנמכרים בחנויות ומכלול המבצעים הקיימים בחנות.
מידע גלוי, מלא ועדכני לגבי המוצרים ברשתות השונות, הניתן לצרכן בכל רגע נתון, מעצים את יכולתו לבחור במוצר וברשת העונים לצרכיו. יש במידע זה כדי לאפשר לצרכן להשוות מחירים ולכלכל את צעדיו בצורה מושכלת טרם הרכישה.
להלן קישורים לאתרי האינטרנט של הקמעונאים עליהם מוטלת החובה בחוק:
* יובהר כי הקישור האמור והמידע אשר בתוכו הינו באחריות הקמעונאים בלבד. יחד עם זאת ככל שיוברר לרשות כי המידע בקישור הינו מטעה, תפעל הרשות בהתאם לסמכויותיה על פי החוק.
שם הרשת קישור לאתר מידע נוסף אלמשהדאוי קינג סטור בע"מ לצפייה במחירים ג.מ מעיין אלפיים (07) בע"מ לצפייה במחירים גוד פארם בע"מ לצפייה במחירים דור אלון ניהול מתחמים קמעונאיים בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש:doralon סיסמא (אין צורך, ניתן להשאיר את השדה ריק) ויקטורי רשת סופרמרקטים בע"מ לצפייה במחירים זול ובגדול בע"מ לצפיה במחירים ח. כהן סוכנות מזון ומשקאות בע"מ לצפיה במחירים טיב טעם רשתות בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש: TivTaam ססמא: (אין צורך, ניתן להשאיר את השדה ריק) (יינות ביתן בע"מ) גלובל ריטייל בע"מ (קרפור , מגה בעיר , יינות ביתן, שותפות אונליין )
יינות ביתן - לצפייה במחירים
קרפור \ מגה - לצפייה במחירים
קוויק - לצפייה במחירים
כ.נ מחסני השוק בע"מ לצפייה במחירים כל בו חצי חינם בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש: HaziHinam סיסמא: (אין צורך, ניתן להשאיר את השדה ריק) מ. יוחננוף ובניו (1988) בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש: yohananof סיסמא: (אין צורך, ניתן להשאיר את השדה ריק) מרב-מזון כל בע"מ (אושר עד) לצפייה במחירים פרטי כניסה למערכת: שם משתמש: osherad סיסמא (אין צורך, ניתן להשאיר את השדה ריק) נתיב החסד - סופר חסד בע"מ (כולל ברכל) לצפייה במחירים סאלח דבאח ובניו בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש - SalachD סיסמא: 12345 סופר ספיר בע"מ לצפייה במחירים סופר פארם (ישראל) בע"מ לצפייה במחירים סיטי מרקט לצפייה במחירים
לצפייה במחירים
לצפייה במחירים
סטופ מרקט בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש - Stop_Market סיסמא: (אין צורך, ניתן להשאיר את השדה ריק) עוף והודו ברקת - חנות המפעל בע"מ לצפייה במחירים פוליצר חדרה (1982) בע"מ לצפייה במחירים שם משתמש- politzer
סיסמא- אין צורך ניתן להשאיר את השדה ריק.
פז קמעונאות ואנרגיה בע"מ יילו - לצפייה במחירים
סופר יודה - לצפייה במחירים
פרשמרקט - לצפייה במחירים
יילו - שם משתמש : Paz_bo
סיסמא: paz468
User- yuda_ho
Password- Yud@147
שם משתמש - freshmarket
סיסמא: (אין צורך, ניתן להשאיר את השדה ריק)
קיי.טי. יבוא ושיווק בע"מ (משנת יוסף) לצפייה במחירים
לצפייה במחירים
קשת טעמים בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש: Keshet סיסמא: (אין צורך, ניתן להשאיר את השדה ריק) רשת חנויות רמי לוי שיווק השקמה 2006 בע"מ
(כולל רשת סופר קופיקס)
לצפייה במחירים
סופר קופיקס - לצפייה במחירים
פרטי כניסה למערכת: שם משתמש: RamiLevi סיסמא: (אין צורך, ניתן להשאיר את השדה ריק)
סופר קופיקס -
שם משתמש: SuperCofixApp
סיסמא: (אין צורך, ניתן להשאיר את השדה ריק)
שופרסל בע"מ (כולל רשת BE) לצפייה במחירים שוק העיר (ט.ע.מ.ס) בע"מ לצפייה במחירים שפע ברכת השם בע"מ לצפייה במחירים
-
+
שקיפות מחירים (השוואת מחירים) - קישורים לאתרי הקמעונאים המאבק ביוקר המחיה הינו מלחמה רב מערכתית ואחת הדרכים האפקטיביות לצורך כך היא הגברת התחרות. חוק המזון (שקיפות מחירים) בא לענות על הצורך הזה. החוק והתקנות מכוחו, מחייבים קמעונאי גדול לפרסם באתר אינטרנט את רשימת כל חנויותיו, את כל מוצרי המזון ומחיריהם הנמכרים בחנויות ומכלול המבצעים הקיימים בחנות.
מידע גלוי, מלא ועדכני לגבי המוצרים ברשתות השונות, הניתן לצרכן בכל רגע נתון, מעצים את יכולתו לבחור במוצר וברשת העונים לצרכיו. יש במידע זה כדי לאפשר לצרכן להשוות מחירים ולכלכל את צעדיו בצורה מושכלת טרם הרכישה.
להלן קישורים לאתרי האינטרנט של הקמעונאים עליהם מוטלת החובה בחוק:
* יובהר כי הקישור האמור והמידע אשר בתוכו הינו באחריות הקמעונאים בלבד. יחד עם זאת ככל שיוברר לרשות כי המידע בקישור הינו מטעה, תפעל הרשות בהתאם לסמכויותיה על פי החוק.
שם הרשת קישור לאתר מידע נוסף אלמשהדאוי קינג סטור בע"מ לצפייה במחירים ג.מ מעיין אלפיים (07) בע"מ לצפייה במחירים גוד פארם בע"מ לצפייה במחירים דור אלון ניהול מתחמים קמעונאיים בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש:doralon סיסמא (אין צורך, ניתן להשאיר את השדה ריק) ויקטורי רשת סופרמרקטים בע"מ לצפייה במחירים זול ובגדול בע"מ לצפיה במחירים ח. כהן סוכנות מזון ומשקאות בע"מ לצפיה במחירים טיב טעם רשתות בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש: TivTaam ססמא: (אין צורך, ניתן להשאיר את השדה ריק) (יינות ביתן בע"מ) גלובל ריטייל בע"מ (קרפור , מגה בעיר , יינות ביתן, שותפות אונליין )
יינות ביתן - לצפייה במחירים
קרפור \ מגה - לצפייה במחירים
קוויק - לצפייה במחירים
כ.נ מחסני השוק בע"מ לצפייה במחירים כל בו חצי חינם בע"מ לצפייה במחירים מ. יוחננוף ובניו (1988) בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש: yohananof סיסמא: (אין צורך, ניתן להשאיר את השדה ריק) מרב-מזון כל בע"מ (אושר עד) לצפייה במחירים פרטי כניסה למערכת: שם משתמש: osherad סיסמא (אין צורך, ניתן להשאיר את השדה ריק) נתיב החסד - סופר חסד בע"מ (כולל ברכל) לצפייה במחירים סאלח דבאח ובניו בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש - SalachD סיסמא: 12345 סופר ספיר בע"מ לצפייה במחירים סופר פארם (ישראל) בע"מ לצפייה במחירים סיטי מרקט לצפייה במחירים
לצפייה במחירים
לצפייה במחירים
סטופ מרקט בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש - Stop_Market סיסמא: (אין צורך, ניתן להשאיר את השדה ריק) עוף והודו ברקת - חנות המפעל בע"מ לצפייה במחירים פוליצר חדרה (1982) בע"מ לצפייה במחירים שם משתמש- politzer
סיסמא- אין צורך ניתן להשאיר את השדה ריק.
פז קמעונאות ואנרגיה בע"מ יילו - לצפייה במחירים
סופר יודה - לצפייה במחירים
פרשמרקט - לצפייה במחירים
יילו - שם משתמש : Paz_bo
סיסמא: paz468
User- yuda_ho
Password- Yud@147
שם משתמש - freshmarket
סיסמא: (אין צורך, ניתן להשאיר את השדה ריק)
קיי.טי. יבוא ושיווק בע"מ (משנת יוסף) לצפייה במחירים
לצפייה במחירים
קשת טעמים בע"מ לצפייה במחירים פרטי כניסה למערכת: שם משתמש: Keshet סיסמא: (אין צורך, ניתן להשאיר את השדה ריק) רשת חנויות רמי לוי שיווק השקמה 2006 בע"מ
(כולל רשת סופר קופיקס)
לצפייה במחירים
סופר קופיקס - לצפייה במחירים
פרטי כניסה למערכת: שם משתמש: RamiLevi סיסמא: (אין צורך, ניתן להשאיר את השדה ריק)
סופר קופיקס -
שם משתמש: SuperCofixApp
סיסמא: (אין צורך, ניתן להשאיר את השדה ריק)
שופרסל בע"מ (כולל רשת BE) לצפייה במחירים שוק העיר (ט.ע.מ.ס) בע"מ לצפייה במחירים שפע ברכת השם בע"מ לצפייה במחירים
+
-