Так что я перебираю отзывы и тип кожи от Sephora и столкнулся с проблемой, определяющей, как убрать элементы со страницы. Sephora.com загружает отзывы динамически после того, как вы прокрутите страницу вниз, поэтому я переключился с красивого супа на Selenium, чтобы получить отзывы.
У отзывов нет ни идентификатора, ни имени, ни идентификатора CSS, который кажется быть стабильным Кажется, что Xpath не распознается каждый раз, когда я пытаюсь использовать его, копируя из chrome или из firefox.
Вот пример HTML из проверенного элемента, который я загрузил в chrome: Просмотр элемента на нужной странице
Мои попытки на данный момент:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome("/Users/myName/Downloads/chromedriver")
url = 'https://www.sephora.com/product/the-porefessional-face-primer-P264900'
driver.get(url)
reviews = driver.find_elements_by_xpath(
"//div[@id='ratings-reviews']//div[@data-comp='Ellipsis Box ']")
print("REVIEWS:", reviews)
Вывод:
| => /Users/myName/anaconda3/bin/python "/Users/myName/Documents/ScrapeyFile Group/attempt32.py"
REVIEWS: []
(base)
Итак в основном пустой список.
ПОПЫТКА 2:
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
# Open up a Firefox browser and navigate to web page.
driver = webdriver.Firefox()
driver.get(
"https://www.sephora.com/product/squalane-antioxidant-cleansing-oil-P416560?skuId=2051902&om_mmc=ppc-GG_1165716902_56760225087_pla-420378096665_2051902_257731959107_9061275_c&country_switch=us&lang=en&ds_rl=1261471&gclid=EAIaIQobChMIisW0iLbK6AIVaR6tBh005wUTEAYYBCABEgJVdvD_BwE&gclsrc=aw.ds"
)
#Scroll to bottom of page b/c its dynamically loading
html = driver.find_element_by_tag_name('html')
html.send_keys(Keys.END)
#scrape stats and comments
comments = driver.find_elements_by_css_selector("div.css-7rv8g1")
print("!!!!!!Comments!!!!!")
print(comments)
ВЫХОД:
| => /Users/MYNAME/anaconda3/bin/python /Users/MYNAME/Downloads/attempt33.py
!!!!!!Comments!!!!!
[]
(base)
Опять пусто. : (
Я получаю те же результаты, когда пытаюсь использовать разные селекторы элементов:
#scrape stats and comments
comments = driver.find_elements_by_class_name("css-7rv8g1")
Я также ничего не получаю при попытке:
comments = driver.find_elements_by_xpath(
"//div[@data-comp='GridCell Box']//div[@data-comp='Ellipsis Box ']")
и Это (обратите внимание, пробел после Ellipsis Box пропал:
comments = driver.find_elements_by_xpath(
"//div[@data-comp='GridCell Box']//div[@data-comp='Ellipsis Box']")
Я попытался использовать решения, обозначенные здесь и здесь но ti безрезультатно - я думаю, что я чего-то не понимаю в этой странице или селене, которые мне не хватает, так как я впервые использую селен, поэтому я супер нуб: (