使用Selenium Python从Google Play Store中提取一个特定应用程序的评论

2024-09-29 01:22:23 发布

您现在位置:Python中文网/ 问答频道 /正文

from time import sleep
from webbrowser import Chrome

import selenium
from bs4 import BeautifulSoup as bsoup
import pandas as pd
from selenium import webdriver

class FindByXpathCss():

    def test(self):
        baseUrl = "https://play.google.com/store/apps/details? 
        id=com.delta.mobile.android&hl=en_US&showAllReviews=true"
        driver = webdriver.Chrome("F:\\Chrome-webdriver\\chromedriver")
        driver.maximize_window()
        driver.get(baseUrl)

这里我需要点击一个按钮(全文回顾)来查看全文回顾

        fullReviewbtn = driver.find_element_by_css_selector('#fcxH9b > div.WpDbMd > c-wiz > div > 
        div.ZfcPIb > div > div.JNury.Ekdcne > div > div > div.W4P4ne > div:nth-child(2) > div > 
        div:nth-child(2) > div > div.d15Mdf.bAhLNe > div.UD7Dzf > span:nth-child(1) > div > 
        button').click()

        sleep(1)

在这里,我们使用xpath阅读完整的评论文本,但我希望阅读
的所有其他评论 该应用程序,仅此应用程序就有1200条评论。我想知道如何使用 在这里循环

        elementByXpath = driver.find_element_by_xpath('//* 
        [@id="fcxH9b"]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/div/div[2]/div/div[2]/div[2]').text

        if elementByXpath is not None:
            print("We found an element using Xpath")
        #Review = elementByXpath.get_attribute("Review")
        print(elementByXpath)
        driver.close()

ff = FindByXpathCss()
ff.test()

Tags: fromimportdivchildasdriverselenium评论
1条回答
网友
1楼 · 发布于 2024-09-29 01:22:23
import time
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
from selenium.common.exceptions import TimeoutException
class FindByXpathCss():
        driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")
        driver.maximize_window()
        baseUrl = "https://play.google.com/store/apps/details?id=com.delta.mobile.android&hl=en_US&showAllReviews=true"
        driver.get(baseUrl)

        scrolls = 15
        while True:
            scrolls -= 1
            driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
            time.sleep(3)
            if scrolls < 0:
                break

        elemtn = WebDriverWait(driver, 30).until(
            EC.element_to_be_clickable((By.XPATH, "//span[contains(@class,'RveJvd snByac')]")))
        elemtn.click()

        scrolls = 5
        while True:
            scrolls -= 1
            driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
            time.sleep(3)
            if scrolls < 0:
                break

        elemtn = WebDriverWait(driver, 30).until(
                    EC.element_to_be_clickable((By.XPATH, "//span[contains(@class,'RveJvd snByac')]")))
        elemtn.click()
        reviewText = WebDriverWait(driver, 30).until(
            EC.presence_of_all_elements_located((By.XPATH, "//*[@class='UD7Dzf']")))

        # reviewText = driver.find_elements_by_xpath("//*[@class='UD7Dzf']")
        for textreview in reviewText:
            print textreview.text

相关问题 更多 >