From 59ee9aa9f1f08a237b72997968e15229fc317d86 Mon Sep 17 00:00:00 2001 From: Alexey Blajenov Date: Sun, 2 Nov 2025 07:51:52 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20parsers.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправлено получение текста отзыва Исправлено получение блока звезд --- yandex_reviews_parser/parsers.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/yandex_reviews_parser/parsers.py b/yandex_reviews_parser/parsers.py index 2403cca..999b2d0 100644 --- a/yandex_reviews_parser/parsers.py +++ b/yandex_reviews_parser/parsers.py @@ -52,18 +52,17 @@ def __get_data_item(self, elem): icon_href = icon_href.split('"')[1] except NoSuchElementException: icon_href = None - try: date = elem.find_element(By.XPATH, ".//meta[@itemprop='datePublished']").get_attribute('content') except NoSuchElementException: date = None try: - text = elem.find_element(By.XPATH, ".//span[@class='business-review-view__body-text']").text + text = elem.find_element(By.CLASS_NAME, "business-review-view__body").text except NoSuchElementException: text = None try: - stars = elem.find_elements(By.XPATH, ".//div[@class='business-rating-badge-view__stars _spacing_normal']/span") + stars = elem.find_elements(By.CSS_SELECTOR, ".business-review-view__rating span") stars = ParserHelper.get_count_star(stars) except NoSuchElementException: stars = 0 @@ -112,7 +111,7 @@ def __get_data_campaign(self) -> dict: xpath_count_rating = ".//div[@class='business-summary-rating-badge-view__rating-count']/span[@class='business-rating-amount-view _summary']" count_rating_list = rating_block.find_element(By.XPATH, xpath_count_rating).text count_rating = ParserHelper.list_to_num(count_rating_list) - xpath_stars = ".//div[@class='business-rating-badge-view__stars _spacing_normal']/span" + xpath_stars = ".//div[@class='business-rating-badge-view__stars']/span" stars = ParserHelper.get_count_star(rating_block.find_elements(By.XPATH, xpath_stars)) except NoSuchElementException: rating = 0 From 5420ff24e3c5f38a8d767dcde9387416c05f3556 Mon Sep 17 00:00:00 2001 From: Alexey Blajenov Date: Sun, 2 Nov 2025 07:52:52 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20helpers.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Изменено получение информации о звездах Звезды теперь int значение т.к. но так и есть. --- yandex_reviews_parser/helpers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yandex_reviews_parser/helpers.py b/yandex_reviews_parser/helpers.py index 6b648dd..75149a5 100644 --- a/yandex_reviews_parser/helpers.py +++ b/yandex_reviews_parser/helpers.py @@ -58,12 +58,12 @@ def get_count_star(review_stars: list) -> Union[float, int]: :param review_stars: Массив элементов звезд рейтинга :return: Рейтинг """ - star_count: float = 0 + star_count: int = 0 for review_star in review_stars: if '_empty' in review_star.get_attribute('class'): continue - if '_half' in review_star.get_attribute('class'): - star_count = star_count + 0.5 + if '_full' in review_star.get_attribute('class'): + star_count += 1 continue - star_count = star_count + 1 + return star_count