Невозможно найти текст с веб-страницы с помощью Selenium - PullRequest
1 голос
/ 17 июня 2020

Я пытаюсь очистить обзоры Amazon по определенному продукту, но не могу найти текст рейтингов с использованием селена. Но то же самое легко удалить с помощью супа.

Ссылка на страницу: https://www.amazon.in/BenQ-inch-Bezel-Monitor-Built/product-reviews/B073NTCT4R/ref=cm_cr_arp_d_paging_btm_next_2? Ie = UTF8 & reviewerType = all_reviews & pageNumber = 39

Вот мой код, использующий Soup:

 link='same link as mentioned above'
 url=requests.get(link).content
 bs=soup(url,'html.parser')
 for i in bs.find_all('span',{'class':'a-icon-alt'}):
    print(i.text.split(' ')[0])   

Вывод

 4.3
 5.0
 1.0
 5.0
 2.0
 4.0
 1.0
 5.0
 5.0
 5.0
 5.0
 5.0
 5.0

Вот мой код с использованием Selenium:

import time
from selenium import webdriver
from bs4 import BeautifulSoup as soup
import requests

link='link to the above mentioned page'
driver=webdriver.Chrome()
driver.get(link)
for i in driver.find_elements_by_css_selector('.a-icon-alt'):
     print(i.text)

Я не могу получить такие же результаты с Selenium, все, что я получаю, это пробелы, эквивалентные количеству элементов, представленных на этой странице. Я также пробовал использовать XPath и class_name, но не получил требуемого ответа.

1 Ответ

1 голос
/ 17 июня 2020

Чтобы получить оценки обзора, введите WebDriverWait и дождитесь presence_of_all_elements_located () и используйте get_attribute("innerHTML") вместо текста

Код :

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

link='https://www.amazon.in/BenQ-inch-Bezel-Monitor-Built/product-reviews/B073NTCT4R/ref=cm_cr_arp_d_paging_btm_next_2?ie=UTF8&reviewerType=all_reviews&pageNumber=39'
driver=webdriver.Chrome()
driver.get(link)
elements=WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,".a-icon-alt")))
for i in elements:
    print(i.get_attribute("innerHTML").split(' ')[0])

Вывод на консоль:

4.3
5.0
1.0
5.0
2.0
4.0
1.0
5.0
5.0
5.0
5.0
5.0
5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...