Nano Hash - криптовалюты, майнинг, программирование

Веб-драйвер Python selenium: получение отзывов Google на основе даты

Я использую веб-драйвер Selenium для извлечения отзывов Google о приложении из магазина Google Play. Вот мой код:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
import pandas as pd
import datetime as dt

driver = webdriver.Chrome('path')
baseurl = 'https://play.google.com/store/apps/details?id=com.mapmyrun.android2&showAllReviews=true'
driver.get(baseurl)

counter = 0
while True:
    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    time.sleep(2)
    counter = counter + 1
    if len(driver.find_elements_by_xpath("//span[text()='Show More']"))>0:
        driver.find_element_by_xpath("//span[contains(text(),'Show More')]").click()
        counter = 0
    if counter == 10:
        element = driver.find_elements_by_xpath("//div[@class='LXrl4c']")
        break;
names = driver.find_elements_by_xpath("//div[@class='bAhLNe kx8XBd']//span[@class='X43Kjb']")
person_info = driver.find_elements_by_xpath("//div[@class='d15Mdf bAhLNe']")


for count, person in enumerate(person_info):
    review_response_person = ''
    response_date = ''
    response_text = ''
    full_text = ''
    
    name = person.find_element_by_xpath(".//span[@class='X43Kjb']").text
    review = person.find_element_by_xpath(".//div[@class='UD7Dzf']/span").text
    review_date = person.find_element_by_xpath(".//span[@class='p2TkOb']").text
    rating = person.find_element_by_xpath(".//div[@class='pf5lIe']/div").get_attribute('aria-label')
    useful = person.find_element_by_xpath(".//div[@class='XlMhZe']//div[@aria-label='Number of times this review was rated helpful']").text
    reviewText = person.find_element(By.CSS_SELECTOR, "span[jsname='fbQN7e']")
    full_text = reviewText.get_attribute("innerHTML")
    
    if len(full_text) > 1:
        review = full_text
    
    if person.find_elements_by_xpath(".//div[@class='LVQB0b']"):
        review_response_person = person.find_element_by_xpath(".//div[@class='LVQB0b']//div/span[@class='X43Kjb']").text
        response_date = person.find_element_by_xpath(".//div[@class='LVQB0b']//div/span[@class='p2TkOb']").text
        response_text = person.find_element_by_xpath(".//div[@class='LVQB0b']").text
        response_text = response_text.replace(review_response_person, '')
        response_text = response_text.replace(response_date, '')

Проблема в том, что я хочу извлечь обзоры по дате. Например, я хочу извлечь отзывы, опубликованные только сегодня или завтра. Я пытался найти какой-либо метод в selenium webdriver, но не смог его найти. Может ли кто-нибудь помочь мне, если мы сможем получить отзывы на основе даты?


Ответы:


1

Вы можете использовать условие для получения данных, например:

today_data=[] 
for count, person in enumerate(person_info):
    review_date = person.find_element_by_xpath(".//span[@class='p2TkOb']").text.lower()
    review_date=dt.datetime.strptime(review_date,"%d %B %Y")
    name = person.find_element_by_xpath(".//span[@class='X43Kjb']").text
    review = person.find_element_by_xpath(".//div[@class='UD7Dzf']/span").text
    if review_date > dt.datetime(year=2021,month=1,day=23):
        today_data.append(name)
        today_data.append(review)

Тогда у вас будет имя и отзыв, например, между 23 января 2021 года и сегодняшним днем.

Если вы находитесь в определенной стране, измените часовой пояс на вашу конкретную страну, чтобы не было ошибки в интерпретации %B:

import locale
locale.setlocale(locale.LC_TIME, 'fr_FR.UTF-8')
28.01.2021
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..